邹炜龙 2 éve
commit
fe1aa05e58
94 módosított fájl, 2442 hozzáadás és 0 törlés
  1. 8 0
      Code/.idea/.gitignore
  2. 1 0
      Code/.idea/.name
  3. 55 0
      Code/.idea/Code.iml
  4. 14 0
      Code/.idea/artifacts/Code_war.xml
  5. 48 0
      Code/.idea/artifacts/Code_war_exploded.xml
  6. 16 0
      Code/.idea/compiler.xml
  7. 7 0
      Code/.idea/encodings.xml
  8. 25 0
      Code/.idea/jarRepositories.xml
  9. 13 0
      Code/.idea/libraries/Maven__com_alibaba_fastjson_1_2_41.xml
  10. 13 0
      Code/.idea/libraries/Maven__com_github_virtuald_curvesapi_1_04.xml
  11. 13 0
      Code/.idea/libraries/Maven__com_google_protobuf_protobuf_java_3_19_4.xml
  12. 13 0
      Code/.idea/libraries/Maven__com_mysql_mysql_connector_j_8_0_31.xml
  13. 13 0
      Code/.idea/libraries/Maven__commons_codec_commons_codec_1_11.xml
  14. 13 0
      Code/.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml
  15. 13 0
      Code/.idea/libraries/Maven__javax_servlet_javax_servlet_api_4_0_1.xml
  16. 13 0
      Code/.idea/libraries/Maven__junit_junit_4_11.xml
  17. 13 0
      Code/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_1.xml
  18. 13 0
      Code/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_7.xml
  19. 13 0
      Code/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_11.xml
  20. 13 0
      Code/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_7.xml
  21. 13 0
      Code/.idea/libraries/Maven__org_apache_poi_poi_3_16.xml
  22. 13 0
      Code/.idea/libraries/Maven__org_apache_poi_poi_ooxml_3_16.xml
  23. 13 0
      Code/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_16.xml
  24. 13 0
      Code/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml
  25. 13 0
      Code/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
  26. 13 0
      Code/.idea/libraries/Maven__org_springframework_spring_aop_5_3_17.xml
  27. 13 0
      Code/.idea/libraries/Maven__org_springframework_spring_beans_5_3_17.xml
  28. 13 0
      Code/.idea/libraries/Maven__org_springframework_spring_context_5_3_17.xml
  29. 13 0
      Code/.idea/libraries/Maven__org_springframework_spring_core_5_3_17.xml
  30. 13 0
      Code/.idea/libraries/Maven__org_springframework_spring_expression_5_3_17.xml
  31. 13 0
      Code/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_17.xml
  32. 13 0
      Code/.idea/libraries/Maven__org_springframework_spring_web_5_3_17.xml
  33. 13 0
      Code/.idea/libraries/Maven__org_springframework_spring_webmvc_5_3_17.xml
  34. 13 0
      Code/.idea/libraries/Maven__stax_stax_api_1_0_1.xml
  35. 14 0
      Code/.idea/misc.xml
  36. 8 0
      Code/.idea/modules.xml
  37. 111 0
      Code/pom.xml
  38. 107 0
      Code/src/main/java/com/biaoge/controller/TimeTableController.java
  39. 167 0
      Code/src/main/java/com/biaoge/dao/TimeTableDao.java
  40. 144 0
      Code/src/main/java/com/biaoge/entity/TimeTable.java
  41. 90 0
      Code/src/main/java/com/biaoge/service/TimeTableService.java
  42. 4 0
      Code/src/main/java/com/biaoge/util/excel/ExcelClassField.java
  43. 4 0
      Code/src/main/java/com/biaoge/util/excel/ExcelExport.java
  44. 4 0
      Code/src/main/java/com/biaoge/util/excel/ExcelImport.java
  45. 981 0
      Code/src/main/java/com/biaoge/util/excel/ExcelUtils.java
  46. 30 0
      Code/src/main/resources/spring-mvc-config.xml
  47. 22 0
      Code/src/main/webapp/WEB-INF/web.xml
  48. 5 0
      Code/src/main/webapp/index.jsp
  49. BIN
      Code/target/biaoge-handler.war
  50. 5 0
      Code/target/biaoge-handler/META-INF/MANIFEST.MF
  51. BIN
      Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/controller/TimeTableController.class
  52. BIN
      Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/dao/TimeTableDao.class
  53. BIN
      Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/entity/TimeTable.class
  54. BIN
      Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/service/TimeTableService.class
  55. BIN
      Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/util/excel/ExcelClassField.class
  56. BIN
      Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/util/excel/ExcelExport.class
  57. BIN
      Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/util/excel/ExcelImport.class
  58. BIN
      Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/util/excel/ExcelUtils.class
  59. 30 0
      Code/target/biaoge-handler/WEB-INF/classes/spring-mvc-config.xml
  60. BIN
      Code/target/biaoge-handler/WEB-INF/lib/commons-codec-1.11.jar
  61. BIN
      Code/target/biaoge-handler/WEB-INF/lib/commons-collections4-4.1.jar
  62. BIN
      Code/target/biaoge-handler/WEB-INF/lib/commons-logging-1.2.jar
  63. BIN
      Code/target/biaoge-handler/WEB-INF/lib/curvesapi-1.04.jar
  64. BIN
      Code/target/biaoge-handler/WEB-INF/lib/fastjson-1.2.41.jar
  65. BIN
      Code/target/biaoge-handler/WEB-INF/lib/httpclient-4.5.7.jar
  66. BIN
      Code/target/biaoge-handler/WEB-INF/lib/httpcore-4.4.11.jar
  67. BIN
      Code/target/biaoge-handler/WEB-INF/lib/httpmime-4.5.7.jar
  68. BIN
      Code/target/biaoge-handler/WEB-INF/lib/mysql-connector-j-8.0.31.jar
  69. BIN
      Code/target/biaoge-handler/WEB-INF/lib/poi-3.16.jar
  70. BIN
      Code/target/biaoge-handler/WEB-INF/lib/poi-ooxml-3.16.jar
  71. BIN
      Code/target/biaoge-handler/WEB-INF/lib/poi-ooxml-schemas-3.16.jar
  72. BIN
      Code/target/biaoge-handler/WEB-INF/lib/protobuf-java-3.19.4.jar
  73. BIN
      Code/target/biaoge-handler/WEB-INF/lib/spring-aop-5.3.17.jar
  74. BIN
      Code/target/biaoge-handler/WEB-INF/lib/spring-beans-5.3.17.jar
  75. BIN
      Code/target/biaoge-handler/WEB-INF/lib/spring-context-5.3.17.jar
  76. BIN
      Code/target/biaoge-handler/WEB-INF/lib/spring-core-5.3.17.jar
  77. BIN
      Code/target/biaoge-handler/WEB-INF/lib/spring-expression-5.3.17.jar
  78. BIN
      Code/target/biaoge-handler/WEB-INF/lib/spring-jcl-5.3.17.jar
  79. BIN
      Code/target/biaoge-handler/WEB-INF/lib/spring-web-5.3.17.jar
  80. BIN
      Code/target/biaoge-handler/WEB-INF/lib/spring-webmvc-5.3.17.jar
  81. BIN
      Code/target/biaoge-handler/WEB-INF/lib/stax-api-1.0.1.jar
  82. BIN
      Code/target/biaoge-handler/WEB-INF/lib/xmlbeans-2.6.0.jar
  83. 22 0
      Code/target/biaoge-handler/WEB-INF/web.xml
  84. 5 0
      Code/target/biaoge-handler/index.jsp
  85. BIN
      Code/target/classes/com/biaoge/controller/TimeTableController.class
  86. BIN
      Code/target/classes/com/biaoge/dao/TimeTableDao.class
  87. BIN
      Code/target/classes/com/biaoge/entity/TimeTable.class
  88. BIN
      Code/target/classes/com/biaoge/service/TimeTableService.class
  89. BIN
      Code/target/classes/com/biaoge/util/excel/ExcelClassField.class
  90. BIN
      Code/target/classes/com/biaoge/util/excel/ExcelExport.class
  91. BIN
      Code/target/classes/com/biaoge/util/excel/ExcelImport.class
  92. BIN
      Code/target/classes/com/biaoge/util/excel/ExcelUtils.class
  93. 30 0
      Code/target/classes/spring-mvc-config.xml
  94. 147 0
      timetable.sql

+ 8 - 0
Code/.idea/.gitignore

@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/../../../../../:\A-Projects\表格导出\Code\.idea/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/

+ 1 - 0
Code/.idea/.name

@@ -0,0 +1 @@
+biaoge-handler

+ 55 - 0
Code/.idea/Code.iml

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="web" name="Web">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
+        </webroots>
+      </configuration>
+    </facet>
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:javax.servlet-api:4.0.1" level="project" />
+    <orderEntry type="library" name="Maven: com.mysql:mysql-connector-j:8.0.31" level="project" />
+    <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.19.4" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.17" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.17" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.17" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.17" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.17" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.17" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.17" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.17" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.7" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.7" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
+    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
+    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.41" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:3.16" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi:3.16" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:3.16" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.6.0" level="project" />
+    <orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
+    <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.04" level="project" />
+  </component>
+</module>

+ 14 - 0
Code/.idea/artifacts/Code_war.xml

@@ -0,0 +1,14 @@
+<component name="ArtifactManager">
+  <artifact type="war" name="Code:war">
+    <output-path>$PROJECT_DIR$/target</output-path>
+    <properties id="maven-jee-properties">
+      <options>
+        <module>Code</module>
+        <packaging>war</packaging>
+      </options>
+    </properties>
+    <root id="archive" name="biaoge-handler.war">
+      <element id="artifact" artifact-name="Code:war exploded" />
+    </root>
+  </artifact>
+</component>

+ 48 - 0
Code/.idea/artifacts/Code_war_exploded.xml

@@ -0,0 +1,48 @@
+<component name="ArtifactManager">
+  <artifact type="exploded-war" name="Code:war exploded">
+    <output-path>$PROJECT_DIR$/target/biaoge-handler</output-path>
+    <properties id="maven-jee-properties">
+      <options>
+        <exploded>true</exploded>
+        <module>Code</module>
+        <packaging>war</packaging>
+      </options>
+    </properties>
+    <root id="root">
+      <element id="directory" name="WEB-INF">
+        <element id="directory" name="classes">
+          <element id="module-output" name="Code" />
+        </element>
+        <element id="directory" name="lib">
+          <element id="library" level="project" name="Maven: com.mysql:mysql-connector-j:8.0.31" />
+          <element id="library" level="project" name="Maven: com.google.protobuf:protobuf-java:3.19.4" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-webmvc:5.3.17" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-aop:5.3.17" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-beans:5.3.17" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-context:5.3.17" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-core:5.3.17" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-jcl:5.3.17" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-expression:5.3.17" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-web:5.3.17" />
+          <element id="library" level="project" name="Maven: org.apache.httpcomponents:httpmime:4.5.7" />
+          <element id="library" level="project" name="Maven: org.apache.httpcomponents:httpclient:4.5.7" />
+          <element id="library" level="project" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" />
+          <element id="library" level="project" name="Maven: commons-logging:commons-logging:1.2" />
+          <element id="library" level="project" name="Maven: commons-codec:commons-codec:1.11" />
+          <element id="library" level="project" name="Maven: com.alibaba:fastjson:1.2.41" />
+          <element id="library" level="project" name="Maven: org.apache.poi:poi-ooxml:3.16" />
+          <element id="library" level="project" name="Maven: org.apache.poi:poi:3.16" />
+          <element id="library" level="project" name="Maven: org.apache.commons:commons-collections4:4.1" />
+          <element id="library" level="project" name="Maven: org.apache.poi:poi-ooxml-schemas:3.16" />
+          <element id="library" level="project" name="Maven: org.apache.xmlbeans:xmlbeans:2.6.0" />
+          <element id="library" level="project" name="Maven: stax:stax-api:1.0.1" />
+          <element id="library" level="project" name="Maven: com.github.virtuald:curvesapi:1.04" />
+        </element>
+      </element>
+      <element id="directory" name="META-INF">
+        <element id="file-copy" path="$PROJECT_DIR$/target/biaoge-handler/META-INF/MANIFEST.MF" />
+      </element>
+      <element id="javaee-facet-resources" facet="Code/web/Web" />
+    </root>
+  </artifact>
+</component>

+ 16 - 0
Code/.idea/compiler.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="Code" />
+      </profile>
+    </annotationProcessing>
+    <bytecodeTargetLevel>
+      <module name="Code" target="1.7" />
+    </bytecodeTargetLevel>
+  </component>
+</project>

+ 7 - 0
Code/.idea/encodings.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
+  </component>
+</project>

+ 25 - 0
Code/.idea/jarRepositories.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public" />
+    </remote-repository>
+  </component>
+</project>

+ 13 - 0
Code/.idea/libraries/Maven__com_alibaba_fastjson_1_2_41.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.alibaba:fastjson:1.2.41">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/com/alibaba/fastjson/1.2.41/fastjson-1.2.41.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/com/alibaba/fastjson/1.2.41/fastjson-1.2.41-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/com/alibaba/fastjson/1.2.41/fastjson-1.2.41-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__com_github_virtuald_curvesapi_1_04.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.github.virtuald:curvesapi:1.04">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/com/github/virtuald/curvesapi/1.04/curvesapi-1.04.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/com/github/virtuald/curvesapi/1.04/curvesapi-1.04-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/com/github/virtuald/curvesapi/1.04/curvesapi-1.04-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__com_google_protobuf_protobuf_java_3_19_4.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.google.protobuf:protobuf-java:3.19.4">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/com/google/protobuf/protobuf-java/3.19.4/protobuf-java-3.19.4.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/com/google/protobuf/protobuf-java/3.19.4/protobuf-java-3.19.4-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/com/google/protobuf/protobuf-java/3.19.4/protobuf-java-3.19.4-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__com_mysql_mysql_connector_j_8_0_31.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.mysql:mysql-connector-j:8.0.31">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/com/mysql/mysql-connector-j/8.0.31/mysql-connector-j-8.0.31.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/com/mysql/mysql-connector-j/8.0.31/mysql-connector-j-8.0.31-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/com/mysql/mysql-connector-j/8.0.31/mysql-connector-j-8.0.31-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__commons_codec_commons_codec_1_11.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: commons-codec:commons-codec:1.11">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/commons-codec/commons-codec/1.11/commons-codec-1.11-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/commons-codec/commons-codec/1.11/commons-codec-1.11-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: commons-logging:commons-logging:1.2">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/commons-logging/commons-logging/1.2/commons-logging-1.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/commons-logging/commons-logging/1.2/commons-logging-1.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__javax_servlet_javax_servlet_api_4_0_1.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: javax.servlet:javax.servlet-api:4.0.1">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/javax/servlet/javax.servlet-api/4.0.1/javax.servlet-api-4.0.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/javax/servlet/javax.servlet-api/4.0.1/javax.servlet-api-4.0.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/javax/servlet/javax.servlet-api/4.0.1/javax.servlet-api-4.0.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__junit_junit_4_11.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: junit:junit:4.11">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/junit/junit/4.11/junit-4.11.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/junit/junit/4.11/junit-4.11-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/junit/junit/4.11/junit-4.11-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_1.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.commons:commons-collections4:4.1">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/commons/commons-collections4/4.1/commons-collections4-4.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/commons/commons-collections4/4.1/commons-collections4-4.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/commons/commons-collections4/4.1/commons-collections4-4.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_7.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.httpcomponents:httpclient:4.5.7">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/httpcomponents/httpclient/4.5.7/httpclient-4.5.7.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/httpcomponents/httpclient/4.5.7/httpclient-4.5.7-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/httpcomponents/httpclient/4.5.7/httpclient-4.5.7-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_11.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.httpcomponents:httpcore:4.4.11">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/httpcomponents/httpcore/4.4.11/httpcore-4.4.11.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/httpcomponents/httpcore/4.4.11/httpcore-4.4.11-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/httpcomponents/httpcore/4.4.11/httpcore-4.4.11-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_7.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.httpcomponents:httpmime:4.5.7">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/httpcomponents/httpmime/4.5.7/httpmime-4.5.7.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/httpcomponents/httpmime/4.5.7/httpmime-4.5.7-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/httpcomponents/httpmime/4.5.7/httpmime-4.5.7-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_apache_poi_poi_3_16.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.poi:poi:3.16">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/poi/poi/3.16/poi-3.16.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/poi/poi/3.16/poi-3.16-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/poi/poi/3.16/poi-3.16-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_apache_poi_poi_ooxml_3_16.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.poi:poi-ooxml:3.16">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/poi/poi-ooxml/3.16/poi-ooxml-3.16.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/poi/poi-ooxml/3.16/poi-ooxml-3.16-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/poi/poi-ooxml/3.16/poi-ooxml-3.16-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_16.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.poi:poi-ooxml-schemas:3.16">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/poi/poi-ooxml-schemas/3.16/poi-ooxml-schemas-3.16.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/poi/poi-ooxml-schemas/3.16/poi-ooxml-schemas-3.16-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/poi/poi-ooxml-schemas/3.16/poi-ooxml-schemas-3.16-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.xmlbeans:xmlbeans:2.6.0">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/xmlbeans/xmlbeans/2.6.0/xmlbeans-2.6.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/xmlbeans/xmlbeans/2.6.0/xmlbeans-2.6.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/apache/xmlbeans/xmlbeans/2.6.0/xmlbeans-2.6.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.hamcrest:hamcrest-core:1.3">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_springframework_spring_aop_5_3_17.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-aop:5.3.17">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-aop/5.3.17/spring-aop-5.3.17.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-aop/5.3.17/spring-aop-5.3.17-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-aop/5.3.17/spring-aop-5.3.17-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_springframework_spring_beans_5_3_17.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-beans:5.3.17">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-beans/5.3.17/spring-beans-5.3.17.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-beans/5.3.17/spring-beans-5.3.17-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-beans/5.3.17/spring-beans-5.3.17-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_springframework_spring_context_5_3_17.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-context:5.3.17">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-context/5.3.17/spring-context-5.3.17.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-context/5.3.17/spring-context-5.3.17-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-context/5.3.17/spring-context-5.3.17-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_springframework_spring_core_5_3_17.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-core:5.3.17">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-core/5.3.17/spring-core-5.3.17.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-core/5.3.17/spring-core-5.3.17-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-core/5.3.17/spring-core-5.3.17-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_springframework_spring_expression_5_3_17.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-expression:5.3.17">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-expression/5.3.17/spring-expression-5.3.17.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-expression/5.3.17/spring-expression-5.3.17-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-expression/5.3.17/spring-expression-5.3.17-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_17.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-jcl:5.3.17">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-jcl/5.3.17/spring-jcl-5.3.17.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-jcl/5.3.17/spring-jcl-5.3.17-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-jcl/5.3.17/spring-jcl-5.3.17-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_springframework_spring_web_5_3_17.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-web:5.3.17">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-web/5.3.17/spring-web-5.3.17.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-web/5.3.17/spring-web-5.3.17-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-web/5.3.17/spring-web-5.3.17-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__org_springframework_spring_webmvc_5_3_17.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-webmvc:5.3.17">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-webmvc/5.3.17/spring-webmvc-5.3.17.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-webmvc/5.3.17/spring-webmvc-5.3.17-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/org/springframework/spring-webmvc/5.3.17/spring-webmvc-5.3.17-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
Code/.idea/libraries/Maven__stax_stax_api_1_0_1.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: stax:stax-api:1.0.1">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/stax/stax-api/1.0.1/stax-api-1.0.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/stax/stax-api/1.0.1/stax-api-1.0.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$PROJECT_DIR$/../../../Environment/localRepository/stax/stax-api/1.0.1/stax-api-1.0.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 14 - 0
Code/.idea/misc.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="FrameworkDetectionExcludesConfiguration">
+    <file type="web" url="file://$PROJECT_DIR$" />
+  </component>
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
+</project>

+ 8 - 0
Code/.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/Code.iml" filepath="$PROJECT_DIR$/.idea/Code.iml" />
+    </modules>
+  </component>
+</project>

+ 111 - 0
Code/pom.xml

@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.example</groupId>
+  <artifactId>biaoge-handler</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>war</packaging>
+
+  <name>biaoge-handler Maven Webapp</name>
+  <!-- FIXME change it to the project's website -->
+  <url>http://www.example.com</url>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.source>1.7</maven.compiler.source>
+    <maven.compiler.target>1.7</maven.compiler.target>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.11</version>
+      <scope>test</scope>
+    </dependency>
+
+    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>javax.servlet-api</artifactId>
+      <version>4.0.1</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.mysql</groupId>
+      <artifactId>mysql-connector-j</artifactId>
+      <version>8.0.31</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-webmvc</artifactId>
+      <version>5.3.24</version>
+    </dependency>
+
+    <!-- 文件上传 -->
+    <dependency>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpmime</artifactId>
+      <version>4.5.7</version>
+    </dependency>
+    <!-- JSON -->
+    <dependency>
+      <groupId>com.alibaba</groupId>
+      <artifactId>fastjson</artifactId>
+      <version>1.2.41</version>
+    </dependency>
+    <!-- POI -->
+    <dependency>
+      <groupId>org.apache.poi</groupId>
+      <artifactId>poi-ooxml</artifactId>
+      <version>3.16</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-webmvc</artifactId>
+      <version>5.3.17</version>
+    </dependency>
+
+  </dependencies>
+
+  <build>
+    <finalName>biaoge-handler</finalName>
+    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
+      <plugins>
+        <plugin>
+          <artifactId>maven-clean-plugin</artifactId>
+          <version>3.1.0</version>
+        </plugin>
+        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
+        <plugin>
+          <artifactId>maven-resources-plugin</artifactId>
+          <version>3.0.2</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>3.8.0</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <version>2.22.1</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-war-plugin</artifactId>
+          <version>3.2.2</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-install-plugin</artifactId>
+          <version>2.5.2</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-deploy-plugin</artifactId>
+          <version>2.8.2</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+</project>

+ 107 - 0
Code/src/main/java/com/biaoge/controller/TimeTableController.java

@@ -0,0 +1,107 @@
+package com.biaoge.controller;
+
+import com.biaoge.service.TimeTableService;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Controller
+@RequestMapping("/TimeTable")
+public class TimeTableController {
+
+    /**
+     * 导出教师课程表
+     * 从日期段中找出一周的教师课表到模板1
+     */
+    @RequestMapping("/exportTeacherTimeTables1")
+    @ResponseBody
+    public String exportTeacherTimeTables1(HttpServletRequest request, HttpServletResponse response) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String begin = request.getParameter("begin");
+        String end = request.getParameter("end");
+        int teacherId = Integer.valueOf(request.getParameter("teacherId"));
+        TimeTableService service = new TimeTableService(sdf.parse(begin), sdf.parse(end));
+        return JSONObject.toJSONString(service.exportTeacherTimeTables1(teacherId));
+    }
+
+    /**
+     * 导出班级课表
+     * 从日期段中找出一周的班级课表并导出到模板1
+     */
+    @RequestMapping("/exportClassTimeTables1")
+    @ResponseBody
+    public String exportClassTimeTables1(HttpServletRequest request, HttpServletResponse response) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String begin = request.getParameter("begin");
+        String end = request.getParameter("end");
+        int classId = Integer.valueOf(request.getParameter("classId"));
+        TimeTableService service = new TimeTableService(sdf.parse(begin), sdf.parse(end));
+        return JSONObject.toJSONString(service.exportClassTimeTables1(classId));
+    }
+
+    /**
+     * 从日期段中找出一周的教室课表并导出到模板1
+     */
+    @RequestMapping("/exportClassRoomTimeTables1")
+    @ResponseBody
+    public String exportClassRoomTimeTables1(HttpServletRequest request, HttpServletResponse response) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String begin = request.getParameter("begin");
+        String end = request.getParameter("end");
+        int classroomId = Integer.valueOf(request.getParameter("classroomId"));
+        TimeTableService service = new TimeTableService(sdf.parse(begin), sdf.parse(end));
+        return JSONObject.toJSONString(service.exportClassRoomTimeTables1(classroomId));
+    }
+
+    /**
+     * 导出教师课程表
+     * 从日期段中找出一周的教师课表到模板2
+     */
+    @RequestMapping("/exportTeacherTimeTables2")
+    @ResponseBody
+    public String exportTeacherTimeTables2(HttpServletRequest request, HttpServletResponse response) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String begin = request.getParameter("begin");
+        String end = request.getParameter("end");
+        int teacherId = Integer.valueOf(request.getParameter("teacherId"));
+        TimeTableService service = new TimeTableService(sdf.parse(begin), sdf.parse(end));
+        return JSONObject.toJSONString(service.exportTeacherTimeTables2(teacherId));
+    }
+
+    /**
+     * 导出班级课表
+     * 从日期段中找出一周的班级课表并导出到模板2
+     */
+    @RequestMapping("/exportClassTimeTables2")
+    @ResponseBody
+    public String exportClassTimeTables2(HttpServletRequest request, HttpServletResponse response) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String begin = request.getParameter("begin");
+        String end = request.getParameter("end");
+        int classId = Integer.valueOf(request.getParameter("classId"));
+        TimeTableService service = new TimeTableService(sdf.parse(begin), sdf.parse(end));
+        return JSONObject.toJSONString(service.exportClassTimeTables2(classId));
+    }
+
+    /**
+     * 从日期段中找出一周的教室课表并导出到模板2
+     */
+    @RequestMapping("/exportClassRoomTimeTables2")
+    @ResponseBody
+    public String exportClassRoomTimeTables2(HttpServletRequest request, HttpServletResponse response) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String begin = request.getParameter("begin");
+        String end = request.getParameter("end");
+        int classroomId = Integer.valueOf(request.getParameter("classroomId"));
+        TimeTableService service = new TimeTableService(sdf.parse(begin), sdf.parse(end));
+        return JSONObject.toJSONString(service.exportClassRoomTimeTables2(classroomId));
+    }
+
+}

+ 167 - 0
Code/src/main/java/com/biaoge/dao/TimeTableDao.java

@@ -0,0 +1,167 @@
+package com.biaoge.dao;
+
+import com.biaoge.entity.TimeTable;
+
+import java.sql.*;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class TimeTableDao {
+
+    public String driverName = "com.mysql.cj.jdbc.Driver";
+
+    public String url = "jdbc:mysql://127.0.0.1:3306/biaoge?serverTimezone=UTC";
+
+    public String userName = "biaoge";
+
+    public String password = "123456";
+
+    /**
+     * 导出教师课程表
+     * 从日期段中找出一周的教师课表到模板1
+     */
+    public List<TimeTable> exportTeacherTimeTables(Date begin, Date end, int teacherId) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String beginStr = sdf.format(begin);
+        String endStr = sdf.format(end);
+        List<TimeTable> timetableList = new ArrayList<>();
+        String sqlString = "select * from view_attendclass where attendclass_date >= '" + beginStr + "' AND attendclass_date < '" + endStr + "' AND teacher_id = " + teacherId;
+        Connection dbConnection;
+        PreparedStatement preStatement;
+        try {
+            Class.forName(driverName);
+            dbConnection = DriverManager.getConnection(url, userName, password);
+            if (dbConnection != null) {
+                preStatement = dbConnection.prepareStatement(sqlString);
+                ResultSet rs = preStatement.executeQuery();
+                while (rs.next()) {
+                    TimeTable timeTable = new TimeTable();
+                    timeTable.setAttendclassId(rs.getInt("attendclass_id"));
+                    timeTable.setAttendclassDate(rs.getString("attendclass_date"));
+                    timeTable.setAttendclassDay(rs.getString("attendclass_day"));
+                    timeTable.setAttendclassNum(rs.getInt("attendclass_num"));
+                    timeTable.setAttendclassStart(rs.getString("attendclass_start"));
+                    timeTable.setAttendclassEnd(rs.getString("attendclass_end"));
+                    timeTable.setTeacherId(rs.getInt("teacher_id"));
+                    timeTable.setClassId(rs.getInt("class_id"));
+                    timeTable.setCourseId(rs.getInt("course_id"));
+                    timeTable.setClassroomId(rs.getInt("classroom_id"));
+                    timeTable.setTeacherName(rs.getString("teacher_name"));
+                    timeTable.setClassName(rs.getString("class_name"));
+                    timeTable.setCourseName(rs.getString("course_name"));
+                    timeTable.setClassroomName(rs.getString("classroom_name"));
+                    timetableList.add(timeTable);
+                }
+                preStatement.close();
+                dbConnection.close();
+            }
+            else {
+                System.out.println("DB creation failed");
+            }
+        }
+        catch (ClassNotFoundException | SQLException e) {
+            System.out.println("Log - SQLexception:" + e.getMessage());
+        }
+        return timetableList;
+    }
+
+    /**
+     * 导出班级课表
+     * 从日期段中找出一周的班级课表并导出到模板1
+     */
+    public List<TimeTable> exportClassTimeTables(Date begin, Date end, int classId) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String beginStr = sdf.format(begin);
+        String endStr = sdf.format(end);
+        List<TimeTable> timetableList = new ArrayList<>();
+        String sqlString = "select * from view_attendclass where attendclass_date >= '" + beginStr + "' AND attendclass_date < '" + endStr + "' AND class_id = " + classId;
+        Connection dbConnection;
+        PreparedStatement preStatement;
+        try {
+            Class.forName(driverName);
+            dbConnection = DriverManager.getConnection(url, userName, password);
+            if (dbConnection != null) {
+                preStatement = dbConnection.prepareStatement(sqlString);
+                ResultSet rs = preStatement.executeQuery();
+                while (rs.next()) {
+                    TimeTable timeTable = new TimeTable();
+                    timeTable.setAttendclassId(rs.getInt("attendclass_id"));
+                    timeTable.setAttendclassDate(rs.getString("attendclass_date"));
+                    timeTable.setAttendclassDay(rs.getString("attendclass_day"));
+                    timeTable.setAttendclassNum(rs.getInt("attendclass_num"));
+                    timeTable.setAttendclassStart(rs.getString("attendclass_start"));
+                    timeTable.setAttendclassEnd(rs.getString("attendclass_end"));
+                    timeTable.setTeacherId(rs.getInt("teacher_id"));
+                    timeTable.setClassId(rs.getInt("class_id"));
+                    timeTable.setCourseId(rs.getInt("course_id"));
+                    timeTable.setClassroomId(rs.getInt("classroom_id"));
+                    timeTable.setTeacherName(rs.getString("teacher_name"));
+                    timeTable.setClassName(rs.getString("class_name"));
+                    timeTable.setCourseName(rs.getString("course_name"));
+                    timeTable.setClassroomName(rs.getString("classroom_name"));
+                    timetableList.add(timeTable);
+                }
+                preStatement.close();
+                dbConnection.close();
+            }
+            else {
+                System.out.println("DB creation failed");
+            }
+        }
+        catch (ClassNotFoundException | SQLException e) {
+            System.out.println("Log - SQLexception:" + e.getMessage());
+        }
+        return timetableList;
+    }
+
+    /**
+     * 从日期段中找出一周的教室课表并导出到模板1
+     */
+    public List<TimeTable> exportClassRoomTimeTables(Date begin, Date end, int classroomId) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String beginStr = sdf.format(begin);
+        String endStr = sdf.format(end);
+        List<TimeTable> timetableList = new ArrayList<>();
+        String sqlString = "select * from view_attendclass where attendclass_date >= '" + beginStr + "' AND attendclass_date < '" + endStr + "' AND classroom_id = " + classroomId;
+        Connection dbConnection;
+        PreparedStatement preStatement;
+        try {
+            Class.forName(driverName);
+            dbConnection = DriverManager.getConnection(url, userName, password);
+            if (dbConnection != null) {
+                preStatement = dbConnection.prepareStatement(sqlString);
+                ResultSet rs = preStatement.executeQuery();
+                while (rs.next()) {
+                    TimeTable timeTable = new TimeTable();
+                    timeTable.setAttendclassId(rs.getInt("attendclass_id"));
+                    timeTable.setAttendclassDate(rs.getString("attendclass_date"));
+                    timeTable.setAttendclassDay(rs.getString("attendclass_day"));
+                    timeTable.setAttendclassNum(rs.getInt("attendclass_num"));
+                    timeTable.setAttendclassStart(rs.getString("attendclass_start"));
+                    timeTable.setAttendclassEnd(rs.getString("attendclass_end"));
+                    timeTable.setTeacherId(rs.getInt("teacher_id"));
+                    timeTable.setClassId(rs.getInt("class_id"));
+                    timeTable.setCourseId(rs.getInt("course_id"));
+                    timeTable.setClassroomId(rs.getInt("classroom_id"));
+                    timeTable.setTeacherName(rs.getString("teacher_name"));
+                    timeTable.setClassName(rs.getString("class_name"));
+                    timeTable.setCourseName(rs.getString("course_name"));
+                    timeTable.setClassroomName(rs.getString("classroom_name"));
+                    timetableList.add(timeTable);
+                }
+                preStatement.close();
+                dbConnection.close();
+            }
+            else {
+                System.out.println("DB creation failed");
+            }
+        }
+        catch (ClassNotFoundException | SQLException e) {
+            System.out.println("Log - SQLexception:" + e.getMessage());
+        }
+        return timetableList;
+    }
+
+}

+ 144 - 0
Code/src/main/java/com/biaoge/entity/TimeTable.java

@@ -0,0 +1,144 @@
+package com.biaoge.entity;
+
+public class TimeTable {
+
+    private int attendclassId;
+
+    private String attendclassDate;
+
+    private String attendclassDay;
+
+    private int attendclassNum;
+
+    private String attendclassStart;
+
+    private String attendclassEnd;
+
+    private int teacherId;
+
+    private int classId;
+
+    private int courseId;
+
+    private int classroomId;
+
+    private String teacherName;
+
+    private String className;
+
+    private String courseName;
+
+    private String classroomName;
+
+    public int getAttendclassId() {
+        return attendclassId;
+    }
+
+    public void setAttendclassId(int attendclassId) {
+        this.attendclassId = attendclassId;
+    }
+
+    public String getAttendclassDate() {
+        return attendclassDate;
+    }
+
+    public void setAttendclassDate(String attendclassDate) {
+        this.attendclassDate = attendclassDate;
+    }
+
+    public String getAttendclassDay() {
+        return attendclassDay;
+    }
+
+    public void setAttendclassDay(String attendclassDay) {
+        this.attendclassDay = attendclassDay;
+    }
+
+    public int getAttendclassNum() {
+        return attendclassNum;
+    }
+
+    public void setAttendclassNum(int attendclassNum) {
+        this.attendclassNum = attendclassNum;
+    }
+
+    public String getAttendclassStart() {
+        return attendclassStart;
+    }
+
+    public void setAttendclassStart(String attendclassStart) {
+        this.attendclassStart = attendclassStart;
+    }
+
+    public String getAttendclassEnd() {
+        return attendclassEnd;
+    }
+
+    public void setAttendclassEnd(String attendclassEnd) {
+        this.attendclassEnd = attendclassEnd;
+    }
+
+    public int getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(int teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public int getClassId() {
+        return classId;
+    }
+
+    public void setClassId(int classId) {
+        this.classId = classId;
+    }
+
+    public int getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(int courseId) {
+        this.courseId = courseId;
+    }
+
+    public int getClassroomId() {
+        return classroomId;
+    }
+
+    public void setClassroomId(int classroomId) {
+        this.classroomId = classroomId;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getClassroomName() {
+        return classroomName;
+    }
+
+    public void setClassroomName(String classroomName) {
+        this.classroomName = classroomName;
+    }
+}

+ 90 - 0
Code/src/main/java/com/biaoge/service/TimeTableService.java

@@ -0,0 +1,90 @@
+package com.biaoge.service;
+
+import com.biaoge.dao.TimeTableDao;
+import com.biaoge.entity.TimeTable;
+
+import java.util.Date;
+import java.util.List;
+
+public class TimeTableService {
+
+    public TimeTableService(Date begin, Date end) {
+        this.begin = begin;
+        this.end = end;
+        if (Math.abs((int) ((end.getTime() - begin.getTime()) / (1000 * 3600 * 24))) > 7) {
+            validate = true;
+            end = new Date(begin.getTime() + (1000 * 3600 * 24 * 7));
+        }
+        else {
+            validate = false;
+        }
+        dao = new TimeTableDao();
+    }
+
+    private boolean validate; //时间段有效期
+    private Date begin; //日期段起点
+    private Date end; //日期段终点
+    private TimeTableDao dao;
+
+    /**
+     * 导出教师课程表
+     * 从日期段中找出一周的教师课表到模板1
+     */
+    public List<TimeTable> exportTeacherTimeTables1(int teacherId) {
+        return dao.exportTeacherTimeTables(begin, end, teacherId);
+    }
+
+    /**
+     * 导出班级课表
+     * 从日期段中找出一周的班级课表并导出到模板1
+     */
+    public List<TimeTable> exportClassTimeTables1(int classId) {
+        return dao.exportClassTimeTables(begin, end, classId);
+    }
+
+    /**
+     * 从日期段中找出一周的教室课表并导出到模板1
+     */
+    public List<TimeTable> exportClassRoomTimeTables1(int classroomId) {
+        return dao.exportClassRoomTimeTables(begin, end, classroomId);
+    }
+
+    /**
+     * 导出教师课程表
+     * 从日期段中找出一周的教师课表到模板2
+     */
+    public List<TimeTable> exportTeacherTimeTables2(int teacherId) {
+        return dao.exportTeacherTimeTables(begin, end, teacherId);
+    }
+
+    /**
+     * 导出班级课表
+     * 从日期段中找出一周的班级课表并导出到模板2
+     */
+    public List<TimeTable> exportClassTimeTables2(int classId) {
+        return dao.exportClassTimeTables(begin, end, classId);
+    }
+
+    /**
+     * 从日期段中找出一周的教室课表并导出到模板2
+     */
+    public List<TimeTable> exportClassRoomTimeTables2(int classroomId) {
+        return dao.exportClassRoomTimeTables(begin, end, classroomId);
+    }
+
+    /**
+     * 把str中的注解删除
+     * @param str
+     * @return
+     */
+    private String strFilter(String str) {
+        /*
+        * 课表中班级、课程、教师、教室等用的名称在数据库中包含注释,如语文
+        (二上)表示二年级
+        * 上学期的语文, 课表中需要把"(二上)"去除;班级二年级(2019)表示
+        2019级的二年级,
+        * 课表中也需要把 "(2019)"去除。注意括号有可能是半角也可能是全角。
+        */
+        return "";
+    }
+}

+ 4 - 0
Code/src/main/java/com/biaoge/util/excel/ExcelClassField.java

@@ -0,0 +1,4 @@
+package com.biaoge.util.excel;
+
+public class ExcelClassField {
+}

+ 4 - 0
Code/src/main/java/com/biaoge/util/excel/ExcelExport.java

@@ -0,0 +1,4 @@
+package com.biaoge.util.excel;
+
+public class ExcelExport {
+}

+ 4 - 0
Code/src/main/java/com/biaoge/util/excel/ExcelImport.java

@@ -0,0 +1,4 @@
+package com.biaoge.util.excel;
+
+public class ExcelImport {
+}

+ 981 - 0
Code/src/main/java/com/biaoge/util/excel/ExcelUtils.java

@@ -0,0 +1,981 @@
+package com.biaoge.util.excel;
+
+//import com.alibaba.fastjson.JSONArray;
+//import com.alibaba.fastjson.JSONObject;
+//import org.apache.poi.hssf.usermodel.HSSFCellStyle;
+//import org.apache.poi.hssf.usermodel.HSSFDataValidation;
+//import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+//import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+//import org.apache.poi.ss.usermodel.*;
+//import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
+//import org.apache.poi.ss.util.CellRangeAddress;
+//import org.apache.poi.ss.util.CellRangeAddressList;
+//import org.apache.poi.xssf.streaming.SXSSFSheet;
+//import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+//import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
+//import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+//import org.cboard.util.StringUtils;
+//import org.springframework.web.multipart.MultipartFile;
+//import javax.servlet.ServletOutputStream;
+//import javax.servlet.http.HttpServletResponse;
+//import java.io.*;
+//import java.lang.reflect.Field;
+//import java.math.BigDecimal;
+//import java.math.RoundingMode;
+//import java.net.URL;
+//import java.text.NumberFormat;
+//import java.text.SimpleDateFormat;
+//import java.util.*;
+//import java.util.Map.Entry;
+
+public class ExcelUtils {
+
+//    private static final String XLSX = ".xlsx";
+//    private static final String XLS = ".xls";
+//    public static final String ROW_MERGE = "row_merge";
+//    public static final String COLUMN_MERGE = "column_merge";
+//    private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
+//    private static final String ROW_NUM = "rowNum";
+//    private static final String ROW_DATA = "rowData";
+//    private static final String ROW_TIPS = "rowTips";
+//    private static final int CELL_OTHER = 0;
+//    private static final int CELL_ROW_MERGE = 1;
+//    private static final int CELL_COLUMN_MERGE = 2;
+//    private static final int CELL_HEADER_HEIGHT = 36*20;
+//    private static final int CELL_COLUMN_HEIGHT = 20*20;
+//    private static final int IMG_HEIGHT = 30;
+//    private static final int IMG_WIDTH = 30;
+//    private static final char LEAN_LINE = '/';
+//    private static final int BYTES_DEFAULT_LENGTH = 10240;
+//    private static final NumberFormat NUMBER_FORMAT = NumberFormat.getNumberInstance();
+//
+//    public static <T> List<T> readFile(File file, Class<T> clazz) throws
+//            Exception {
+//        JSONArray array = readFile(file);
+//        return getBeanList(array, clazz);
+//    }
+//    public static <T> List<T> readMultipartFile(MultipartFile mFile,
+//                                                Class<T> clazz) throws Exception {
+//        JSONArray array = readMultipartFile(mFile);
+//        return getBeanList(array, clazz);
+//    }
+//    public static JSONArray readFile(File file) throws Exception {
+//        return readExcel(null, file);
+//    }
+//    public static JSONArray readMultipartFile(MultipartFile mFile)
+//            throws Exception {
+//        return readExcel(mFile, null);
+//    }
+//    private static <T> List<T> getBeanList(JSONArray array, Class<T>
+//            clazz) throws Exception {
+//        List<T> list = new ArrayList<>();
+//        Map<Integer, String> uniqueMap = new HashMap<>(16);
+//        for (int i = 0; i < array.size(); i++) {
+//            list.add(getBean(clazz, array.getJSONObject(i), uniqueMap));
+//        }
+//        return list;
+//    }
+//    /**
+//     * 获取每个对象的数据
+//     */
+//    private static <T> T getBean(Class<T> c, JSONObject obj, Map<Integer, String> uniqueMap) throws Exception {
+//        T t = c.newInstance();
+//        Field[] fields = c.getDeclaredFields();
+//        List<String> errMsgList = new ArrayList<>();
+//        boolean hasRowTipsField = false;
+//        StringBuilder uniqueBuilder = new StringBuilder();
+//        int rowNum = 0;
+//        for (Field field : fields) {
+//            // 行号
+//            if (field.getName().equals(ROW_NUM)) {
+//                rowNum = obj.getInteger(ROW_NUM);
+//                field.setAccessible(true);
+//                field.set(t, rowNum);
+//                continue;
+//            }
+//            // 是否需要设置异常信息
+//            if (field.getName().equals(ROW_TIPS)) {
+//                hasRowTipsField = true;
+//                continue;
+//            }
+//            // 原始数据
+//            if (field.getName().equals(ROW_DATA)) {
+//                field.setAccessible(true);
+//                field.set(t, obj.toString());
+//                continue;
+//            }
+//            // 设置对应属性值
+//            setFieldValue(t, field, obj, uniqueBuilder, errMsgList);
+//        }
+//        // 数据唯一性校验
+//        if (uniqueBuilder.length() > 0) {
+//            if (uniqueMap.containsValue(uniqueBuilder.toString())) {
+//                Set<Integer> rowNumKeys = uniqueMap.keySet();
+//                for (Integer num : rowNumKeys) {
+//                    if
+//                    (uniqueMap.get(num).equals(uniqueBuilder.toString())) {
+//                        errMsgList.add(String.format("数据唯一性校验失
+//                                败,(%s)与第%s 行重复)", uniqueBuilder, num));
+//                    }
+//                }
+//            } else {
+//                uniqueMap.put(rowNum, uniqueBuilder.toString());
+//            }
+//        }
+//        // 失败处理
+//        if (errMsgList.isEmpty() && !hasRowTipsField) {return t;
+//        }
+//        StringBuilder sb = new StringBuilder();
+//        int size = errMsgList.size();
+//        for (int i = 0; i < size; i++) {
+//            if (i == size - 1) {
+//                sb.append(errMsgList.get(i));
+//            } else {
+//                sb.append(errMsgList.get(i)).append(";");
+//            }
+//        }
+//        // 设置错误信息
+//        for (Field field : fields) {
+//            if (field.getName().equals(ROW_TIPS)) {
+//                field.setAccessible(true);
+//                field.set(t, sb.toString());
+//            }
+//        }
+//        return t;
+//    }
+//    private static <T> void setFieldValue(T t, Field field, JSONObject
+//            obj, StringBuilder uniqueBuilder, List<String> errMsgList) {
+//        // 获取 ExcelImport 注解属性
+//        ExcelImport annotation = field.getAnnotation(ExcelImport.class);
+//        if (annotation == null) {
+//            return;
+//        }
+//        String cname = annotation.value();
+//        if (cname.trim().length() == 0) {
+//            return;
+//        }
+//        // 获取具体值
+//        String val = null;
+//        if (obj.containsKey(cname)) {
+//            val = getString(obj.getString(cname));
+//        }
+//        if (val == null) {
+//            return;
+//        }
+//        field.setAccessible(true);
+//        // 判断是否必填
+//        boolean require = annotation.required();
+//        if (require && val.isEmpty()) {
+//            errMsgList.add(String.format("[%s]不能为空", cname));
+//            return;
+//        }
+//        // 数据唯一性获取
+//        boolean unique = annotation.unique();
+//        if (unique) {
+//            if (uniqueBuilder.length() > 0) {
+//                uniqueBuilder.append("--").append(val);
+//            } else {
+//                uniqueBuilder.append(val);
+//            }
+//        }
+//        // 判断是否超过最大长度
+//        int maxLength = annotation.maxLength();
+//        if (maxLength > 0 && val.length() > maxLength) {
+//            errMsgList.add(String.format("[%s]长度不能超过%s 个字符(当前%s
+//                    个字符)", cname, maxLength, val.length()));
+//        }
+//        // 判断当前属性是否有映射关系
+//        LinkedHashMap<String, String> kvMap = getKvMap(annotation.kv());
+//        if (!kvMap.isEmpty()) {
+//            boolean isMatch = false;
+//            for (String key : kvMap.keySet()) {
+//                if (kvMap.get(key).equals(val)) {
+//                    val = key;
+//                    isMatch = true;
+//                    break;
+//                }
+//            }
+//            if (!isMatch) {
+//                errMsgList.add(String.format("[%s]的值不正确(当前值为%s)",
+//                        cname, val));
+//                return;
+//            }
+//        }
+//        // 其余情况根据类型赋值
+//        String fieldClassName = field.getType().getSimpleName();
+//        try {
+//            if ("String".equalsIgnoreCase(fieldClassName)) {
+//                field.set(t, val);
+//            } else if ("boolean".equalsIgnoreCase(fieldClassName)) {
+//                field.set(t, Boolean.valueOf(val));
+//            } else if ("int".equalsIgnoreCase(fieldClassName) ||
+//                    "Integer".equals(fieldClassName)) {try {
+//                field.set(t, Integer.valueOf(val));
+//            } catch (NumberFormatException e) {
+//                errMsgList.add(String.format("[%s]的值格式不正确(当前值
+//                        为%s)", cname, val));
+//            }
+//            } else if ("double".equalsIgnoreCase(fieldClassName)) {
+//                field.set(t, Double.valueOf(val));
+//            } else if ("long".equalsIgnoreCase(fieldClassName)) {
+//                field.set(t, Long.valueOf(val));
+//            } else if ("BigDecimal".equalsIgnoreCase(fieldClassName)) {
+//                field.set(t, new BigDecimal(val));
+//            }
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//    }
+//    private static JSONArray readExcel(MultipartFile mFile, File file)
+//            throws IOException {
+//        boolean fileNotExist = (file == null || !file.exists());
+//        if (mFile == null && fileNotExist) {
+//            return new JSONArray();
+//        }
+//        // 解析表格数据
+//        InputStream in;
+//        String fileName;
+//        if (mFile != null) {
+//            // 上传文件解析
+//            in = mFile.getInputStream();
+//            fileName =
+//                    getString(mFile.getOriginalFilename()).toLowerCase();
+//        } else {
+//            // 本地文件解析
+//            in = new FileInputStream(file);
+//            fileName = file.getName().toLowerCase();
+//        }
+//        Workbook book;
+//        if (fileName.endsWith(XLSX)) {
+//            book = new XSSFWorkbook(in);
+//        } else if (fileName.endsWith(XLS)) {
+//            POIFSFileSystem poifsFileSystem = new POIFSFileSystem(in);
+//            book = new HSSFWorkbook(poifsFileSystem);
+//        } else {
+//            return new JSONArray();
+//        }
+//        JSONArray array = read(book);
+//        book.close();
+//        in.close();
+//        return array;
+//    }
+//    private static JSONArray read(Workbook book) {
+//        // 获取 Excel 文件第一个 Sheet 页面
+//        Sheet sheet = book.getSheetAt(0);
+//        return readSheet(sheet);
+//    }
+//    private static JSONArray readSheet(Sheet sheet) {
+//        // 首行下标
+//        int rowStart = sheet.getFirstRowNum();
+//        // 尾行下标
+//        int rowEnd = sheet.getLastRowNum();
+//        // 获取表头行
+//        Row headRow = sheet.getRow(rowStart);
+//        if (headRow == null) {
+//            return new JSONArray();
+//        }
+//        int cellStart = headRow.getFirstCellNum();
+//        int cellEnd = headRow.getLastCellNum();
+//        Map<Integer, String> keyMap = new HashMap<>();
+//        for (int j = cellStart; j < cellEnd; j++) {
+//            // 获取表头数据
+//            String val = getCellValue(headRow.getCell(j));
+//            if (val != null && val.trim().length() != 0) {
+//                keyMap.put(j, val);
+//            }
+//        }
+//        // 如果表头没有数据则不进行解析
+//        if (keyMap.isEmpty()) {
+//            return (JSONArray) Collections.emptyList();
+//        }
+//        // 获取每行 JSON 对象的值
+//        JSONArray array = new JSONArray();
+//        // 如果首行与尾行相同,表明只有一行,返回表头数据
+//        if (rowStart == rowEnd) {
+//            JSONObject obj = new JSONObject();
+//            // 添加行号
+//            obj.put(ROW_NUM, 1);
+//            for (int i : keyMap.keySet()) {
+//                obj.put(keyMap.get(i), "");
+//            }
+//            array.add(obj);
+//            return array;
+//        }
+//        for (int i = rowStart + 1; i <= rowEnd; i++) {
+//            Row eachRow = sheet.getRow(i);
+//            JSONObject obj = new JSONObject();
+//            // 添加行号
+//            obj.put(ROW_NUM, i + 1);
+//            StringBuilder sb = new StringBuilder();
+//            for (int k = cellStart; k < cellEnd; k++) {
+//                if (eachRow != null) {
+//                    String val = getCellValue(eachRow.getCell(k));
+//                    // 所有数据添加到里面,用于判断该行是否为空
+//                    sb.append(val);
+//                    obj.put(keyMap.get(k), val);
+//                }
+//            }
+//            if (sb.length() > 0) {
+//                array.add(obj);
+//            }
+//        }
+//        return array;
+//    }
+//    private static String getCellValue(Cell cell) {
+//        // 空白或空
+//        if (cell == null || cell.getCellTypeEnum() == CellType.BLANK) {
+//            return "";
+//        }
+//        // String 类型
+//        if (cell.getCellTypeEnum() == CellType.STRING) {
+//            String val = cell.getStringCellValue();
+//            if (val == null || val.trim().length() == 0) {
+//                return "";
+//            }
+//            return val.trim();
+//        }
+//        // 数字类型
+//        if (cell.getCellTypeEnum() == CellType.NUMERIC) {
+//            // 科学计数法类型
+//            return NUMBER_FORMAT.format(cell.getNumericCellValue()) +
+//                    "";
+//        }
+//        // 布尔值类型
+//        if (cell.getCellTypeEnum() == CellType.BOOLEAN) {
+//            return cell.getBooleanCellValue() + "";
+//        }
+//        // 错误类型
+//        return cell.getCellFormula();
+//    }
+//    public static <T> void exportTemplate(HttpServletResponse response,
+//                                          String fileName, Class<T> clazz) {
+//        exportTemplate(response, fileName, fileName, clazz, false);
+//    }
+//    public static <T> void exportTemplate(HttpServletResponse response,
+//                                          String fileName, String sheetName,
+//                                          Class<T> clazz) {
+//        exportTemplate(response, fileName, sheetName, clazz, false);
+//    }
+//    public static <T> void exportTemplate(HttpServletResponse response,
+//                                          String fileName, Class<T> clazz,
+//                                          boolean isContainExample) {
+//        exportTemplate(response, fileName, fileName, clazz,
+//                isContainExample);
+//    }
+//    public static <T> void exportTemplate(HttpServletResponse response,
+//                                          String fileName, String sheetName,
+//                                          Class<T> clazz, boolean
+//                                                  isContainExample) {
+//        // 获取表头字段
+//        List<ExcelClassField> headFieldList =
+//                getExcelClassFieldList(clazz);
+//        // 获取表头数据和示例数据
+//        List<List<Object>> sheetDataList = new ArrayList<>();
+//        List<Object> headList = new ArrayList<>();
+//        List<Object> exampleList = new ArrayList<>();
+//        Map<Integer, List<String>> selectMap = new LinkedHashMap<>();
+//        for (int i = 0; i < headFieldList.size(); i++) {
+//            ExcelClassField each = headFieldList.get(i);
+//            headList.add(each.getName());exampleList.add(each.getExample());
+//            LinkedHashMap<String, String> kvMap = each.getKvMap();
+//            if (kvMap != null && kvMap.size() > 0) {
+//                selectMap.put(i, new ArrayList<>(kvMap.values()));
+//            }
+//        }
+//        sheetDataList.add(headList);
+//        if (isContainExample) {
+//            sheetDataList.add(exampleList);
+//        }
+//        // 导出数据
+//        export(response, fileName, sheetName, sheetDataList, selectMap);
+//    }
+//    private static <T> List<ExcelClassField>
+//    getExcelClassFieldList(Class<T> clazz) {
+//        // 解析所有字段
+//        Field[] fields = clazz.getDeclaredFields();
+//        boolean hasExportAnnotation = false;
+//        Map<Integer, List<ExcelClassField>> map = new LinkedHashMap<>();
+//        List<Integer> sortList = new ArrayList<>();
+//        for (Field field : fields) {
+//            ExcelClassField cf = getExcelClassField(field);
+//            if (cf.getHasAnnotation() == 1) {
+//                hasExportAnnotation = true;
+//            }
+//            int sort = cf.getSort();
+//            if (map.containsKey(sort)) {
+//                map.get(sort).add(cf);
+//            } else {
+//                List<ExcelClassField> list = new ArrayList<>();
+//                list.add(cf);
+//                sortList.add(sort);
+//                map.put(sort, list);
+//            }
+//        }
+//        Collections.sort(sortList);
+//        // 获取表头
+//        List<ExcelClassField> headFieldList = new ArrayList<>();
+//        if (hasExportAnnotation) {
+//            for (Integer sort : sortList) {
+//                for (ExcelClassField cf : map.get(sort)) {
+//                    if (cf.getHasAnnotation() == 1) {
+//                        headFieldList.add(cf);
+//                    }
+//                }
+//            }
+//        } else {
+//            headFieldList.addAll(map.get(0));
+//        }
+//        return headFieldList;
+//    }
+//    private static ExcelClassField getExcelClassField(Field field) {
+//        ExcelClassField cf = new ExcelClassField();
+//        String fieldName = field.getName();
+//        cf.setFieldName(fieldName);
+//        ExcelExport annotation = field.getAnnotation(ExcelExport.class);
+//        // 无 ExcelExport 注解情况
+//        if (annotation == null) {
+//            cf.setHasAnnotation(0);
+//            cf.setName(fieldName);
+//            cf.setSort(0);
+//            return cf;
+//        }
+//        // 有 ExcelExport 注解情况
+//        cf.setHasAnnotation(1);
+//        cf.setName(annotation.value());
+//        String example = getString(annotation.example());
+//        if (!example.isEmpty()) {
+//            if (isNumeric(example)) {
+//                cf.setExample(Double.valueOf(example));
+//            } else {
+//                cf.setExample(example);
+//            }
+//        } else {
+//            cf.setExample("");
+//        }
+//        cf.setSort(annotation.sort());
+//        // 解析映射
+//        String kv = getString(annotation.kv());
+//        cf.setKvMap(getKvMap(kv));
+//        return cf;
+//    }
+//    private static LinkedHashMap<String, String> getKvMap(String kv) {
+//        LinkedHashMap<String, String> kvMap = new LinkedHashMap<>();
+//        if (kv.isEmpty()) {
+//            return kvMap;
+//        }
+//        String[] kvs = kv.split(";");
+//        if (kvs.length == 0) {
+//            return kvMap;}
+//        for (String each : kvs) {
+//            String[] eachKv = getString(each).split("-");
+//            if (eachKv.length != 2) {
+//                continue;
+//            }
+//            String k = eachKv[0];
+//            String v = eachKv[1];
+//            if (k.isEmpty() || v.isEmpty()) {
+//                continue;
+//            }
+//            kvMap.put(k, v);
+//        }
+//        return kvMap;
+//    }
+//    /**
+//     * 导出表格到本地
+//     *
+//     * @param file 本地文件对象
+//     * @param sheetData 导出数据
+//     */
+//    public static void exportFile(File file, List<List<Object>>
+//            sheetData) {
+//        if (file == null) {
+//            System.out.println("文件创建失败");
+//            return;
+//        }
+//        if (sheetData == null) {
+//            sheetData = new ArrayList<>();
+//        }
+//        export(null, file, file.getName(), file.getName(), sheetData,
+//                null);
+//    }
+//    /**
+//     * 导出表格到本地
+//     *
+//     * @param <T> 导出数据类似,和 K 类型保持一致
+//    实习实训指导书 二〇二二年五月七日
+//    46 / 78
+//     * @param filePath 文件父路径(如:D:/doc/excel/)
+//     * @param fileName 文件名称(不带尾缀,如:学生表)
+//     * @param list 导出数据
+//     * @throws IOException IO 异常
+//     */
+//    public static <T> File exportFile(String filePath, String fileName,
+//                                      List<T> list) throws IOException {
+//        File file = getFile(filePath, fileName);
+//        List<List<Object>> sheetData = getSheetData(list);
+//        exportFile(file, sheetData);
+//        return file;
+//    }
+//    /**
+//     * 获取文件
+//     *
+//     * @param filePath filePath 文件父路径(如:D:/doc/excel/)
+//     * @param fileName 文件名称(不带尾缀,如:用户表)
+//     * @return 本地 File 文件对象
+//     */
+//    private static File getFile(String filePath, String fileName) throws
+//            IOException {
+//        String dirPath = getString(filePath);
+//        String fileFullPath;
+//        if (dirPath.isEmpty()) {
+//            fileFullPath = fileName;
+//        } else {
+//            // 判定文件夹是否存在,如果不存在,则级联创建
+//            File dirFile = new File(dirPath);
+//            if (!dirFile.exists()) {
+//                dirFile.mkdirs();
+//            }
+//            // 获取文件夹全名
+//            if (dirPath.endsWith(String.valueOf(LEAN_LINE))) {
+//                fileFullPath = dirPath + fileName + XLSX;
+//            } else {
+//                fileFullPath = dirPath + LEAN_LINE + fileName + XLSX;
+//            }
+//        }
+//        System.out.println(fileFullPath);
+//        File file = new File(fileFullPath);
+//        if (!file.exists()) {
+//            file.createNewFile();
+//        }
+//        return file;
+//    }
+//    private static <T> List<List<Object>> getSheetData(List<T> list) {
+//        // 获取表头字段
+//        List<ExcelClassField> excelClassFieldList =
+//                getExcelClassFieldList(list.get(0).getClass());
+//        List<String> headFieldList = new ArrayList<>();
+//        List<Object> headList = new ArrayList<>();
+//        Map<String, ExcelClassField> headFieldMap = new HashMap<>();
+//        for (ExcelClassField each : excelClassFieldList) {
+//            String fieldName = each.getFieldName();
+//            headFieldList.add(fieldName);
+//            headFieldMap.put(fieldName, each);
+//            headList.add(each.getName());
+//        }
+//        // 添加表头名称
+//        List<List<Object>> sheetDataList = new ArrayList<>();
+//        sheetDataList.add(headList);
+//        // 获取表数据
+//        for (T t : list) {
+//            Map<String, Object> fieldDataMap = getFieldDataMap(t);
+//            Set<String> fieldDataKeys = fieldDataMap.keySet();
+//            List<Object> rowList = new ArrayList<>();
+//            for (String headField : headFieldList) {
+//                if (!fieldDataKeys.contains(headField)) {
+//                    continue;
+//                }
+//                Object data = fieldDataMap.get(headField);
+//                if (data == null) {
+//                    rowList.add("");
+//                    continue;
+//                }
+//                ExcelClassField cf = headFieldMap.get(headField);
+//                // 判断是否有映射关系
+//                LinkedHashMap<String, String> kvMap = cf.getKvMap();
+//                if (kvMap == null || kvMap.isEmpty()) {
+//                    rowList.add(data);
+//                    continue;
+//                }
+//                String val = kvMap.get(data.toString());
+//                if (isNumeric(val)) {
+//                    rowList.add(Double.valueOf(val));
+//                } else {
+//                    实习实训指导书 二〇二二年五月七日
+//                    48 / 78
+//                    rowList.add(val);
+//                }
+//            }
+//            sheetDataList.add(rowList);
+//        }
+//        return sheetDataList;
+//    }
+//    private static <T> Map<String, Object> getFieldDataMap(T t) {
+//        Map<String, Object> map = new HashMap<>();
+//        Field[] fields = t.getClass().getDeclaredFields();
+//        try {
+//            for (Field field : fields) {
+//                String fieldName = field.getName();
+//                field.setAccessible(true);
+//                Object object = field.get(t);
+//                map.put(fieldName, object);
+//            }
+//        } catch (IllegalArgumentException | IllegalAccessException e) {
+//            e.printStackTrace();
+//        }
+//        return map;
+//    }
+//    public static void exportEmpty(HttpServletResponse response, String
+//            fileName) {
+//        List<List<Object>> sheetDataList = new ArrayList<>();
+//        List<Object> headList = new ArrayList<>();
+//        headList.add("导出无数据");
+//        sheetDataList.add(headList);
+//        export(response, fileName, sheetDataList);
+//    }
+//    public static void export(HttpServletResponse response, String
+//            fileName, List<List<Object>> sheetDataList) {
+//        export(response, fileName, fileName, sheetDataList, null);
+//    }
+//    public static void export(HttpServletResponse response, String
+//            fileName, String sheetName,
+//                              List<List<Object>> sheetDataList) {
+//        export(response, fileName, sheetName, sheetDataList, null);public static void export(HttpServletResponse response, String
+//        fileName, String sheetName,
+//                List<List<Object>> sheetDataList,
+//                Map<Integer, List<String>> selectMap) {
+//            export(response, null, fileName, sheetName, sheetDataList,
+//                    selectMap);
+//        }
+//        public static <T, K> void export(HttpServletResponse response,
+//                String fileName, List<T> list, Class<K> template) {
+//            // list 是否为空
+//            boolean lisIsEmpty = list == null || list.isEmpty();
+//            // 如果模板数据为空,且导入的数据为空,则导出空文件
+//            if (template == null && lisIsEmpty) {
+//                exportEmpty(response, fileName);
+//                return;
+//            }
+//            // 如果 list 数据,则导出模板数据
+//            if (lisIsEmpty) {
+//                exportTemplate(response, fileName, template);
+//                return;
+//            }
+//            // 导出数据
+//            List<List<Object>> sheetDataList = getSheetData(list);
+//            export(response, fileName, sheetDataList);
+//        }
+//        public static void export(HttpServletResponse response, String
+//        fileName, List<List<Object>> sheetDataList, Map<Integer, List<String>>
+//                selectMap) {
+//            export(response, fileName, fileName, sheetDataList, selectMap);
+//        }
+//        private static void export(HttpServletResponse response, File file,
+//                String fileName, String sheetName,
+//                List<List<Object>> sheetDataList,
+//                Map<Integer, List<String>> selectMap) {
+//            // 整个 Excel 表格 book 对象
+//            SXSSFWorkbook book = new SXSSFWorkbook();
+//            // 每个 Sheet 页
+//            Sheet sheet = book.createSheet(sheetName);
+//            Drawing<?> patriarch = sheet.createDrawingPatriarch();
+//            // 设置表头背景色(灰色)
+//            CellStyle headStyle = book.createCellStyle();
+//            实习实训指导书 二〇二二年五月七日
+//            50 / 78
+//            //水平居中
+//            headStyle.setAlignment(CellStyle.ALIGN_CENTER);
+//            //垂直居中
+//            headStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+//
+//            headStyle.setFillForegroundColor(IndexedColors.LIGHT_TURQUOISE.index);
+//            headStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+//            headStyle.setAlignment(HorizontalAlignment.CENTER);
+//            // 设置表身背景色(默认色)
+//            CellStyle rowStyle = book.createCellStyle();
+//            rowStyle.setAlignment(HorizontalAlignment.CENTER);
+//            rowStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+//            // 设置表格边框
+//            rowStyle.setBorderBottom(CellStyle.BORDER_THIN);
+//            rowStyle.setBorderLeft(CellStyle.BORDER_THIN);
+//            rowStyle.setBorderRight(CellStyle.BORDER_THIN);
+//            rowStyle.setBorderTop(CellStyle.BORDER_THIN);
+//            // 设置表格列宽度(默认为 15 个字节)
+//            sheet.setDefaultColumnWidth(15);
+//
+//            // 创建合并算法数组
+//            int rowLength = sheetDataList.size();
+//            int columnLength = sheetDataList.get(0).size();
+//            int[][] mergeArray = new int[rowLength][columnLength];
+//            for (int i = 0; i < sheetDataList.size(); i++) {
+//                // 每个 Sheet 页中的行数据
+//                Row row = sheet.createRow(i);
+//                if(i==0){
+//                    row.setHeight((short) CELL_HEADER_HEIGHT);
+//                }else{
+//                    row.setHeight((short) CELL_COLUMN_HEIGHT);
+//                }
+//                List<Object> rowList = sheetDataList.get(i);
+//                for (int j = 0; j < rowList.size(); j++) {
+//                    // 每个行数据中的单元格数据
+//                    Object o = rowList.get(j);
+//                    int v = 0;
+//                    if (o instanceof URL) {
+//                        实习实训指导书 二〇二二年五月七日
+//                        51 / 78
+//                        // 如果要导出图片的话, 链接需要传递 URL 对象
+//                        setCellPicture(book, row, patriarch, i, j, (URL) o);
+//                    } else {
+//                        Cell cell = row.createCell(j);
+//                        if (i == 0) {
+//                            // 第一行为表头行,采用灰色底背景
+//                            v = setCellValue(cell, o, headStyle);
+//                        } else {
+//                            // 其他行为数据行,默认白底色
+//                            v = setCellValue(cell, o, rowStyle);
+//                        }
+//                    }
+//                    mergeArray[i][j] = v;
+//                }
+//            }
+//            // 合并单元格
+//            mergeCells(sheet, mergeArray);
+//            // 设置下拉列表
+//            setSelect(sheet, selectMap);
+//            // 写数据
+//            if (response != null) {
+//                // 前端导出
+//                try {
+//                    write(response, book, fileName);
+//                } catch (IOException e) {
+//                    e.printStackTrace();
+//                }
+//            } else {
+//                // 本地导出
+//                FileOutputStream fos;
+//                try {
+//                    fos = new FileOutputStream(file);
+//                    ByteArrayOutputStream ops = new ByteArrayOutputStream();
+//                    book.write(ops);
+//                    fos.write(ops.toByteArray());
+//                    fos.close();
+//                } catch (Exception e) {
+//                    e.printStackTrace();
+//                }
+//            }
+//        }
+//        /**
+//         * 合并当前 Sheet 页的单元格
+//         实习实训指导书 二〇二二年五月七日
+//         52 / 78
+//         *
+//         * @param sheet 当前 sheet 页
+//         * @param mergeArray 合并单元格算法
+//         */
+//        private static void mergeCells(Sheet sheet, int[][] mergeArray) {
+//            // 横向合并
+//            for (int x = 0; x < mergeArray.length; x++) {
+//                int[] arr = mergeArray[x];
+//                boolean merge = false;
+//                int y1 = 0;
+//                int y2 = 0;
+//                for (int y = 0; y < arr.length; y++) {
+//                    int value = arr[y];
+//                    if (value == CELL_COLUMN_MERGE) {
+//                        if (!merge) {
+//                            y1 = y;
+//                        }
+//                        y2 = y;
+//                        merge = true;
+//                    } else {
+//                        merge = false;
+//                        if (y1 > 0) {
+//                            sheet.addMergedRegion(new CellRangeAddress(x, x,
+//                                    (y1 - 1), y2));
+//                        }
+//                        y1 = 0;
+//                        y2 = 0;
+//                    }
+//                }
+//                if (y1 > 0) {
+//                    sheet.addMergedRegion(new CellRangeAddress(x, x, (y1 -
+//                            1), y2));
+//                }
+//            }
+//            // 纵向合并
+//            int xLen = mergeArray.length;
+//            int yLen = mergeArray[0].length;
+//            for (int y = 0; y < yLen; y++) {
+//                boolean merge = false;
+//                int x1 = 0;
+//                int x2 = 0;
+//                for (int x = 0; x < xLen; x++) {
+//                    int value = mergeArray[x][y];
+//                    if (value == CELL_ROW_MERGE) {
+//                        if (!merge) {
+//                            x1 = x;
+//                        }
+//                        x2 = x;
+//                        merge = true;
+//                    } else {
+//                        merge = false;
+//                        if (x1 > 0) {
+//                            sheet.addMergedRegion(new CellRangeAddress((x1 -
+//                                    1), x2, y, y));
+//                        }
+//                        x1 = 0;
+//                        x2 = 0;
+//                    }
+//                }
+//                if (x1 > 0) {
+//                    sheet.addMergedRegion(new CellRangeAddress((x1 - 1), x2,
+//                            y, y));
+//                }
+//            }
+//        }
+//        private static void write(HttpServletResponse response,
+//                SXSSFWorkbook book, String fileName) throws IOException {
+//            response.setContentType("application/vnd.openxmlformats�officedocument.spreadsheetml.sheet");
+//            response.setCharacterEncoding("utf-8");
+//            String name = new String(fileName.getBytes("GBK"), "ISO8859_1")
+//                    + XLSX;
+//            response.addHeader("Content-Disposition", "attachment;filename="
+//                    + name);
+//            ServletOutputStream out = response.getOutputStream();
+//            book.write(out);
+//            out.flush();
+//            out.close();
+//        }
+//        private static int setCellValue(Cell cell, Object o, CellStyle
+//        style) {
+//            // 设置样式
+//            cell.setCellStyle(style);
+//            // 数据为空时
+//            if (o == null) {
+//                cell.setCellType(CellType.STRING);
+//                cell.setCellValue("");
+//                return CELL_OTHER;
+//            }
+//            // 是否为字符串
+//            if (o instanceof String) {
+//                String s = o.toString();
+//                if (isNumeric(s) && StringUtils.isNotEmpty(s)) {
+//                    cell.setCellType(CellType.NUMERIC);
+//                    cell.setCellValue(Double.parseDouble(s));
+//                    return CELL_OTHER;
+//                } else {
+//                    cell.setCellType(CellType.STRING);
+//                    cell.setCellValue(s);
+//                }
+//                if (s.equals(ROW_MERGE)) {
+//                    return CELL_ROW_MERGE;
+//                } else if (s.equals(COLUMN_MERGE)) {
+//                    return CELL_COLUMN_MERGE;
+//                } else {
+//                    return CELL_OTHER;
+//                }
+//            }
+//            // 是否为字符串
+//            if (o instanceof Integer || o instanceof Long || o instanceof
+//                    Double || o instanceof Float) {
+//                cell.setCellType(CellType.NUMERIC);
+//                cell.setCellValue(Double.parseDouble(o.toString()));
+//                return CELL_OTHER;
+//            }
+//            // 是否为 Boolean
+//            if (o instanceof Boolean) {
+//                cell.setCellType(CellType.BOOLEAN);
+//                cell.setCellValue((Boolean) o);
+//                return CELL_OTHER;
+//            }
+//            // 如果是 BigDecimal,则默认 3 位小数
+//            if (o instanceof BigDecimal) {
+//                cell.setCellType(CellType.NUMERIC);
+//                cell.setCellValue(((BigDecimal) o).setScale(3, RoundingMode.HALF_UP).doubleValue());
+//                return CELL_OTHER;
+//            }// 如果是 Date 数据,则显示格式化数据
+//            if (o instanceof Date) {
+//                cell.setCellType(CellType.STRING);
+//                cell.setCellValue(formatDate((Date) o));
+//                return CELL_OTHER;
+//            }
+//            // 如果是其他,则默认字符串类型
+//            cell.setCellType(CellType.STRING);
+//            cell.setCellValue(o.toString());
+//            return CELL_OTHER;
+//        }
+//        private static void setCellPicture(SXSSFWorkbook wb, Row sr,
+//                Drawing<?> patriarch, int x, int y, URL url) {
+//            // 设置图片宽高
+//            sr.setHeight((short) (IMG_WIDTH * IMG_HEIGHT));
+//            // (jdk1.7 版本 try 中定义流可自动关闭)
+//            try (InputStream is = url.openStream(); ByteArrayOutputStream
+//                    outputStream = new ByteArrayOutputStream()) {
+//                byte[] buff = new byte[BYTES_DEFAULT_LENGTH];
+//                int rc;
+//                while ((rc = is.read(buff, 0, BYTES_DEFAULT_LENGTH)) > 0) {
+//                    outputStream.write(buff, 0, rc);
+//                }
+//                // 设置图片位置
+//                XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, y, x, y + 1, x + 1);
+//                // 设置这个,图片会自动填满单元格的长宽
+//                anchor.setAnchorType(AnchorType.MOVE_AND_RESIZE);
+//                patriarch.createPicture(anchor,
+//                        wb.addPicture(outputStream.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
+//            } catch (Exception e) {
+//                e.printStackTrace();
+//            }
+//        }
+//        private static String formatDate(Date date) {
+//            if (date == null) {
+//                return "";
+//            }
+//            SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT);
+//            return format.format(date);
+//        }
+//        private static void setSelect(Sheet sheet, Map<Integer,
+//                List<String>> selectMap) {
+//            if (selectMap == null || selectMap.isEmpty()) {
+//                return;
+//            }
+//            Set<Entry<Integer, List<String>>> entrySet =
+//                    selectMap.entrySet();
+//            for (Entry<Integer, List<String>> entry : entrySet) {
+//                int y = entry.getKey();
+//                List<String> list = entry.getValue();
+//                if (list == null || list.isEmpty()) {
+//                    continue;
+//                }
+//                String[] arr = new String[list.size()];
+//                for (int i = 0; i < list.size(); i++) {
+//                    arr[i] = list.get(i);
+//                }
+//                DataValidationHelper helper =
+//                        sheet.getDataValidationHelper();
+//                CellRangeAddressList addressList = new
+//                        CellRangeAddressList(1, 65000, y, y);
+//                DataValidationConstraint dvc =
+//                        helper.createExplicitListConstraint(arr);
+//                DataValidation dv = helper.createValidation(dvc,
+//                        addressList);
+//                if (dv instanceof HSSFDataValidation) {
+//                    dv.setSuppressDropDownArrow(false);
+//                } else {
+//                    dv.setSuppressDropDownArrow(true);
+//                    dv.setShowErrorBox(true);
+//                }
+//                sheet.addValidationData(dv);
+//            }
+//        }
+//        private static boolean isNumeric(String str) {
+//            if ("0.0".equals(str)) {
+//                return true;
+//            }
+//            for (int i = str.length(); --i >= 0; ) {
+//                if (!Character.isDigit(str.charAt(i))) {
+//                    return false;
+//                }
+//            }
+//            return true;
+//        }
+//        private static String getString(String s) {
+//            if (s == null) {
+//                return "";
+//            }
+//            if (s.isEmpty()) {
+//                return s;
+//            }
+//            return s.trim();
+//        }
+//    }
+
+}

+ 30 - 0
Code/src/main/resources/spring-mvc-config.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:mvc="http://www.springframework.org/schema/mvc"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
+
+    <mvc:default-servlet-handler/>
+
+    <!-- 自动注入(@Component、@Repository、@Service、@Controller) -->
+    <context:component-scan base-package="com.biaoge.controller" />
+
+    <!-- 注解驱动 -->
+    <mvc:annotation-driven>
+        <mvc:message-converters register-defaults="true">
+            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
+                <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
+            </bean>
+        </mvc:message-converters>
+    </mvc:annotation-driven>
+
+    <!-- 静态资源配置 -->
+    <mvc:resources mapping="/assets/**" location="/assets/"/>
+
+    <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
+    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
+        <property name="prefix" value="/"/>
+        <property name="suffix" value=".jsp"/>
+    </bean>
+
+</beans>

+ 22 - 0
Code/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,22 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd" >
+
+<web-app>
+  <display-name>Archetype Created Web Application</display-name>
+
+  <servlet>
+    <servlet-name>SpringMVC</servlet-name>
+    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+    <init-param>
+      <param-name>contextConfigLocation</param-name>
+      <param-value>classpath:spring-mvc-config.xml</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>SpringMVC</servlet-name>
+    <url-pattern>/</url-pattern>
+  </servlet-mapping>
+
+</web-app>

+ 5 - 0
Code/src/main/webapp/index.jsp

@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>

BIN
Code/target/biaoge-handler.war


+ 5 - 0
Code/target/biaoge-handler/META-INF/MANIFEST.MF

@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Created-By: IntelliJ IDEA
+Built-By: ZZY
+Build-Jdk: 1.8.0_181
+

BIN
Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/controller/TimeTableController.class


BIN
Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/dao/TimeTableDao.class


BIN
Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/entity/TimeTable.class


BIN
Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/service/TimeTableService.class


BIN
Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/util/excel/ExcelClassField.class


BIN
Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/util/excel/ExcelExport.class


BIN
Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/util/excel/ExcelImport.class


BIN
Code/target/biaoge-handler/WEB-INF/classes/com/biaoge/util/excel/ExcelUtils.class


+ 30 - 0
Code/target/biaoge-handler/WEB-INF/classes/spring-mvc-config.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:mvc="http://www.springframework.org/schema/mvc"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
+
+    <mvc:default-servlet-handler/>
+
+    <!-- 自动注入(@Component、@Repository、@Service、@Controller) -->
+    <context:component-scan base-package="com.biaoge.controller" />
+
+    <!-- 注解驱动 -->
+    <mvc:annotation-driven>
+        <mvc:message-converters register-defaults="true">
+            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
+                <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
+            </bean>
+        </mvc:message-converters>
+    </mvc:annotation-driven>
+
+    <!-- 静态资源配置 -->
+    <mvc:resources mapping="/assets/**" location="/assets/"/>
+
+    <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
+    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
+        <property name="prefix" value="/"/>
+        <property name="suffix" value=".jsp"/>
+    </bean>
+
+</beans>

BIN
Code/target/biaoge-handler/WEB-INF/lib/commons-codec-1.11.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/commons-collections4-4.1.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/commons-logging-1.2.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/curvesapi-1.04.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/fastjson-1.2.41.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/httpclient-4.5.7.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/httpcore-4.4.11.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/httpmime-4.5.7.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/mysql-connector-j-8.0.31.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/poi-3.16.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/poi-ooxml-3.16.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/poi-ooxml-schemas-3.16.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/protobuf-java-3.19.4.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/spring-aop-5.3.17.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/spring-beans-5.3.17.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/spring-context-5.3.17.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/spring-core-5.3.17.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/spring-expression-5.3.17.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/spring-jcl-5.3.17.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/spring-web-5.3.17.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/spring-webmvc-5.3.17.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/stax-api-1.0.1.jar


BIN
Code/target/biaoge-handler/WEB-INF/lib/xmlbeans-2.6.0.jar


+ 22 - 0
Code/target/biaoge-handler/WEB-INF/web.xml

@@ -0,0 +1,22 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd" >
+
+<web-app>
+  <display-name>Archetype Created Web Application</display-name>
+
+  <servlet>
+    <servlet-name>SpringMVC</servlet-name>
+    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+    <init-param>
+      <param-name>contextConfigLocation</param-name>
+      <param-value>classpath:spring-mvc-config.xml</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>SpringMVC</servlet-name>
+    <url-pattern>/</url-pattern>
+  </servlet-mapping>
+
+</web-app>

+ 5 - 0
Code/target/biaoge-handler/index.jsp

@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>

BIN
Code/target/classes/com/biaoge/controller/TimeTableController.class


BIN
Code/target/classes/com/biaoge/dao/TimeTableDao.class


BIN
Code/target/classes/com/biaoge/entity/TimeTable.class


BIN
Code/target/classes/com/biaoge/service/TimeTableService.class


BIN
Code/target/classes/com/biaoge/util/excel/ExcelClassField.class


BIN
Code/target/classes/com/biaoge/util/excel/ExcelExport.class


BIN
Code/target/classes/com/biaoge/util/excel/ExcelImport.class


BIN
Code/target/classes/com/biaoge/util/excel/ExcelUtils.class


+ 30 - 0
Code/target/classes/spring-mvc-config.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:mvc="http://www.springframework.org/schema/mvc"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
+
+    <mvc:default-servlet-handler/>
+
+    <!-- 自动注入(@Component、@Repository、@Service、@Controller) -->
+    <context:component-scan base-package="com.biaoge.controller" />
+
+    <!-- 注解驱动 -->
+    <mvc:annotation-driven>
+        <mvc:message-converters register-defaults="true">
+            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
+                <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
+            </bean>
+        </mvc:message-converters>
+    </mvc:annotation-driven>
+
+    <!-- 静态资源配置 -->
+    <mvc:resources mapping="/assets/**" location="/assets/"/>
+
+    <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
+    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
+        <property name="prefix" value="/"/>
+        <property name="suffix" value=".jsp"/>
+    </bean>
+
+</beans>

+ 147 - 0
timetable.sql

@@ -0,0 +1,147 @@
+/*
+Navicat MySQL Data Transfer
+
+Source Server         : localhost
+Source Server Version : 50624
+Source Host           : localhost:3306
+Source Database       : timetable
+
+Target Server Type    : MYSQL
+Target Server Version : 50624
+File Encoding         : 65001
+
+Date: 2022-12-27 18:03:22
+*/
+
+SET FOREIGN_KEY_CHECKS=0;
+
+-- ----------------------------
+-- Table structure for attendclass
+-- ----------------------------
+DROP TABLE IF EXISTS `attendclass`;
+CREATE TABLE `attendclass` (
+  `attendclass_id` int(11) NOT NULL AUTO_INCREMENT,
+  `attendclass_date` varchar(100) DEFAULT NULL,
+  `attendclass_day` varchar(100) DEFAULT NULL,
+  `attendclass_num` int(11) DEFAULT NULL,
+  `attendclass_start` varchar(100) DEFAULT NULL,
+  `attendclass_end` varchar(100) DEFAULT NULL,
+  `teacher_id` int(11) DEFAULT NULL,
+  `class_id` int(11) DEFAULT NULL,
+  `course_id` int(11) DEFAULT NULL,
+  `classroom_id` int(11) DEFAULT NULL,
+  PRIMARY KEY (`attendclass_id`),
+  KEY `fk_atttendclasswithclass` (`class_id`),
+  KEY `fk_atttendclasswithteacher` (`teacher_id`),
+  KEY `fk_atttendclasswithcourse` (`course_id`),
+  KEY `fk_atttendclasswithclassroom` (`classroom_id`),
+  CONSTRAINT `fk_atttendclasswithclass` FOREIGN KEY (`class_id`) REFERENCES `class` (`class_id`) ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `fk_atttendclasswithclassroom` FOREIGN KEY (`classroom_id`) REFERENCES `classroom` (`classroom_id`) ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `fk_atttendclasswithcourse` FOREIGN KEY (`course_id`) REFERENCES `course` (`course_id`) ON DELETE CASCADE ON UPDATE CASCADE,
+  CONSTRAINT `fk_atttendclasswithteacher` FOREIGN KEY (`teacher_id`) REFERENCES `teacher` (`teacher_id`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb4;
+
+-- ----------------------------
+-- Records of attendclass
+-- ----------------------------
+INSERT INTO `attendclass` VALUES ('1', '2022-12-19', '1', '1', '8:00', '9:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('2', '2022-12-19', '1', '2', '9:00', '10:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('3', '2022-12-19', '1', '3', '10:00', '11:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('4', '2022-12-19', '1', '4', '11:00', '12:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('5', '2022-12-19', '1', '5', '14:00', '15:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('6', '2022-12-19', '1', '6', '15:00', '16:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('7', '2022-12-20', '2', '1', '8:00', '9:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('8', '2022-12-20', '2', '2', '9:00', '10:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('9', '2022-12-20', '2', '3', '10:00', '11:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('10', '2022-12-20', '2', '4', '11:00', '12:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('11', '2022-12-20', '2', '5', '14:00', '15:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('12', '2022-12-20', '2', '6', '15:00', '16:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('13', '2022-12-21', '3', '1', '8:00', '9:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('14', '2022-12-21', '3', '2', '9:00', '10:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('15', '2022-12-21', '3', '3', '10:00', '11:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('16', '2022-12-21', '3', '4', '11:00', '12:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('17', '2022-12-21', '3', '5', '14:00', '15:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('18', '2022-12-21', '3', '6', '15:00', '16:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('19', '2022-12-22', '4', '1', '8:00', '9:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('20', '2022-12-22', '4', '2', '9:00', '10:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('21', '2022-12-22', '4', '3', '10:00', '11:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('22', '2022-12-22', '4', '4', '11:00', '12:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('23', '2022-12-22', '4', '5', '14:00', '15:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('24', '2022-12-22', '4', '6', '15:00', '16:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('25', '2022-12-23', '5', '1', '8:00', '9:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('26', '2022-12-23', '5', '2', '9:00', '10:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('27', '2022-12-23', '5', '3', '10:00', '11:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('28', '2022-12-23', '5', '4', '11:00', '12:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('29', '2022-12-23', '5', '5', '14:00', '15:00', '1', '1', '1', '1');
+INSERT INTO `attendclass` VALUES ('30', '2022-12-23', '5', '6', '15:00', '16:00', '1', '1', '1', '1');
+
+-- ----------------------------
+-- Table structure for class
+-- ----------------------------
+DROP TABLE IF EXISTS `class`;
+CREATE TABLE `class` (
+  `class_id` int(11) NOT NULL AUTO_INCREMENT,
+  `class_name` varchar(100) DEFAULT NULL,
+  PRIMARY KEY (`class_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
+
+-- ----------------------------
+-- Records of class
+-- ----------------------------
+INSERT INTO `class` VALUES ('1', '一班');
+
+-- ----------------------------
+-- Table structure for classroom
+-- ----------------------------
+DROP TABLE IF EXISTS `classroom`;
+CREATE TABLE `classroom` (
+  `classroom_id` int(11) NOT NULL AUTO_INCREMENT,
+  `classroom_name` varchar(100) DEFAULT NULL,
+  PRIMARY KEY (`classroom_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
+
+-- ----------------------------
+-- Records of classroom
+-- ----------------------------
+INSERT INTO `classroom` VALUES ('1', '第一教室');
+
+-- ----------------------------
+-- Table structure for course
+-- ----------------------------
+DROP TABLE IF EXISTS `course`;
+CREATE TABLE `course` (
+  `course_id` int(11) NOT NULL AUTO_INCREMENT,
+  `course_name` varchar(100) DEFAULT NULL,
+  PRIMARY KEY (`course_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
+
+-- ----------------------------
+-- Records of course
+-- ----------------------------
+INSERT INTO `course` VALUES ('1', '高数');
+
+-- ----------------------------
+-- Table structure for teacher
+-- ----------------------------
+DROP TABLE IF EXISTS `teacher`;
+CREATE TABLE `teacher` (
+  `teacher_id` int(11) NOT NULL AUTO_INCREMENT,
+  `teacher_name` varchar(100) DEFAULT NULL,
+  PRIMARY KEY (`teacher_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
+
+-- ----------------------------
+-- Records of teacher
+-- ----------------------------
+INSERT INTO `teacher` VALUES ('1', '张老师');
+
+-- ----------------------------
+-- View structure for view_attendclass
+-- ----------------------------
+DROP VIEW IF EXISTS `view_attendclass`;
+CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER  VIEW `view_attendclass` AS select a.*
+,(select class_name from class where class_id = a.class_id) as class_name
+,(select course_name from course where course_id = a.course_id) as course_name
+,(select classroom_name from classroom where classroom_id = a.classroom_id) as classroom_name
+,(select teacher_name from teacher where teacher_id = a.teacher_id) as teacher_name
+ from attendclass as a ;