From b23f8cd1438c2b3c6f7e334502de619ffbb7fdc7 Mon Sep 17 00:00:00 2001
From: linzhijie <19970921lzj>
Date: 星期三, 24 三月 2021 19:24:01 +0800
Subject: [PATCH] 报告邮件标题跟随语言变换

---
 src/main/resources/application-local.yml                                          |   37 +++--
 src/main/resources/mybatis/exam/EntDemographyInfoMapper.xml                       |    5 
 src/main/java/com/ots/project/exam/service/IEntDemographyInfoService.java         |    7 +
 src/main/java/com/ots/project/exam/service/impl/EntDemographyInfoServiceImpl.java |   10 +
 .idea/workspace.xml                                                               |  217 ++++++++++++++++++++++-------------
 src/main/java/com/ots/project/exam/mapper/EntDemographyInfoMapper.java            |    7 +
 jar/tai-ots-framework.jar                                                         |    0 
 src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java        |   45 +++++++
 src/main/resources/application-dev.yml                                            |   28 ++--
 9 files changed, 244 insertions(+), 112 deletions(-)

diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 892bc2c..9b7f49b 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -19,20 +19,19 @@
     <select />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="cd72c5cc-17e9-4269-9d87-e1dc29ad79ec" name="Default Changelist" comment="">
-      <change afterPath="$PROJECT_DIR$/jar/tai-ots-framework.jar" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/resources/application-dev.yml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/resources/application-local.yml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/resources/application-online.yml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/resources/application-prod.yml" afterDir="false" />
+    <list default="true" id="cd72c5cc-17e9-4269-9d87-e1dc29ad79ec" name="Default Changelist" comment="琛ュ厖鐜閰嶇疆">
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/ots/OtsApplication.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/ots/OtsApplication.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/jar/tai-ots-framework.jar" beforeDir="false" afterPath="$PROJECT_DIR$/jar/tai-ots-framework.jar" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/ots/project/exam/mapper/EntDemographyInfoMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/ots/project/exam/mapper/EntDemographyInfoMapper.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/ots/project/exam/restcontroller/ExamPaperAnswerController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/ots/project/exam/restcontroller/ExamPaperAnswerController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/resources/application-sand.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application-sand.yml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/resources/application.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application.yml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/resources/logback.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/logback.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/resources/mailConfig.properties" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mailConfig.properties" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/IEntDemographyInfoService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/IEntDemographyInfoService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/EntDemographyInfoServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/EntDemographyInfoServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/application-dev.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application-dev.yml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/application-local.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application-local.yml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mybatis/exam/EntDemographyInfoMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mybatis/exam/EntDemographyInfoMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/static/ots/js/ry-ui.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/static/ots/js/ry-ui.js" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -40,6 +39,11 @@
     <option name="LAST_RESOLUTION" value="IGNORE" />
   </component>
   <component name="Git.Settings">
+    <option name="RECENT_BRANCH_BY_REPOSITORY">
+      <map>
+        <entry key="$PROJECT_DIR$" value="tai-ots-master-20210316" />
+      </map>
+    </option>
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
   </component>
   <component name="MavenImportPreferences">
@@ -68,12 +72,12 @@
     <property name="WebServerToolWindowFactoryState" value="false" />
     <property name="aspect.path.notification.shown" value="true" />
     <property name="ignore_missing_gitignore" value="true" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$/../tai-ots-framework" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/../../Project/estage" />
     <property name="nodejs_package_manager_path" value="npm" />
     <property name="project.structure.last.edited" value="Project" />
     <property name="project.structure.proportion" value="0.0" />
     <property name="project.structure.side.proportion" value="0.0" />
-    <property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
+    <property name="settings.editor.selected.configurable" value="File.Encoding" />
     <property name="vue.rearranger.settings.migration" value="true" />
   </component>
   <component name="RecentsManager">
@@ -91,7 +95,7 @@
     </option>
   </component>
   <component name="RunManager">
-    <configuration name="OtsApplication (1)" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
+    <configuration name="OtsApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true">
       <module name="tai-ots-master" />
       <extension name="coverage">
         <pattern>
@@ -100,13 +104,14 @@
         </pattern>
       </extension>
       <option name="SPRING_BOOT_MAIN_CLASS" value="com.ots.OtsApplication" />
+      <option name="ALTERNATIVE_JRE_PATH" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
     </configuration>
     <recent_temporary>
       <list>
-        <item itemvalue="Spring Boot.OtsApplication (1)" />
+        <item itemvalue="Spring Boot.OtsApplication" />
       </list>
     </recent_temporary>
   </component>
@@ -134,7 +139,20 @@
       <workItem from="1615646368004" duration="3950000" />
       <workItem from="1615687698610" duration="24365000" />
       <workItem from="1615790694638" duration="12801000" />
-      <workItem from="1615859554413" duration="19554000" />
+      <workItem from="1615859554413" duration="23461000" />
+      <workItem from="1615949826156" duration="724000" />
+      <workItem from="1615964487389" duration="3807000" />
+      <workItem from="1616054060031" duration="2110000" />
+      <workItem from="1616073767415" duration="1939000" />
+      <workItem from="1616135952000" duration="9944000" />
+      <workItem from="1616165344652" duration="6093000" />
+      <workItem from="1616212921235" duration="14207000" />
+      <workItem from="1616232933711" duration="4578000" />
+      <workItem from="1616255840849" duration="1053000" />
+      <workItem from="1616311845452" duration="4534000" />
+      <workItem from="1616341817344" duration="977000" />
+      <workItem from="1616379322437" duration="2089000" />
+      <workItem from="1616384832741" duration="4189000" />
     </task>
     <task id="LOCAL-00001" summary="娴嬭瘎椤圭洰鏈�鏂颁唬鐮�">
       <created>1615212708854</created>
@@ -150,7 +168,14 @@
       <option name="project" value="LOCAL" />
       <updated>1615460723307</updated>
     </task>
-    <option name="localTasksCounter" value="3" />
+    <task id="LOCAL-00003" summary="琛ュ厖鐜閰嶇疆">
+      <created>1615895844574</created>
+      <option name="number" value="00003" />
+      <option name="presentableId" value="LOCAL-00003" />
+      <option name="project" value="LOCAL" />
+      <updated>1615895844574</updated>
+    </task>
+    <option name="localTasksCounter" value="4" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
@@ -196,7 +221,8 @@
   <component name="VcsManagerConfiguration">
     <MESSAGE value="娴嬭瘎椤圭洰鏈�鏂颁唬鐮�" />
     <MESSAGE value="娴嬭瘎绯荤粺澶栭儴浠g爜" />
-    <option name="LAST_COMMIT_MESSAGE" value="娴嬭瘎绯荤粺澶栭儴浠g爜" />
+    <MESSAGE value="琛ュ厖鐜閰嶇疆" />
+    <option name="LAST_COMMIT_MESSAGE" value="琛ュ厖鐜閰嶇疆" />
   </component>
   <component name="WindowStateProjectService">
     <state x="590" y="113" key="#OtsApplication" timestamp="1615515366491">
@@ -207,110 +233,114 @@
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
     <state x="440" y="94" key="#Project_Structure/0.0.1920.1040@0.0.1920.1040" timestamp="1615515318160" />
-    <state x="414" y="174" key="#com.intellij.execution.impl.EditConfigurationsDialog" timestamp="1615688571928">
+    <state x="414" y="174" key="#com.intellij.execution.impl.EditConfigurationsDialog" timestamp="1615896285345">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state x="414" y="174" key="#com.intellij.execution.impl.EditConfigurationsDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1615688571928" />
-    <state x="456" y="74" key="CommitChangelistDialog2" timestamp="1615460721590">
+    <state x="414" y="174" key="#com.intellij.execution.impl.EditConfigurationsDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1615896285345" />
+    <state x="765" y="225" key="#com.intellij.ide.util.MemberChooser" timestamp="1616236596670">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state x="456" y="74" key="CommitChangelistDialog2/0.0.1920.1040@0.0.1920.1040" timestamp="1615460721590" />
-    <state x="135" y="145" width="1736" height="856" key="DiffContextDialog" timestamp="1615732620930">
+    <state x="765" y="225" key="#com.intellij.ide.util.MemberChooser/0.0.1920.1040@0.0.1920.1040" timestamp="1616236596670" />
+    <state x="533" y="147" key="CommitChangelistDialog2" timestamp="1616311985460">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state x="135" y="145" width="1736" height="856" key="DiffContextDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1615732620930" />
-    <state x="740" y="274" key="FileChooserDialogImpl" timestamp="1615860106593">
+    <state x="533" y="147" key="CommitChangelistDialog2/0.0.1920.1040@0.0.1920.1040" timestamp="1616311985460" />
+    <state x="135" y="208" width="1736" height="793" key="DiffContextDialog" timestamp="1616311978717">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state x="740" y="274" key="FileChooserDialogImpl/0.0.1920.1040@0.0.1920.1040" timestamp="1615860106593" />
-    <state width="267" height="357" key="Git.Branch.Popup" timestamp="1615460729320">
+    <state x="135" y="208" width="1736" height="793" key="DiffContextDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1616311978717" />
+    <state x="740" y="274" key="FileChooserDialogImpl" timestamp="1616397949799">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state width="267" height="357" key="Git.Branch.Popup/0.0.1920.1040@0.0.1920.1040" timestamp="1615460729320" />
-    <state width="1877" height="385" key="GridCell.Tab.0.bottom" timestamp="1615889667308">
+    <state x="740" y="274" key="FileChooserDialogImpl/0.0.1920.1040@0.0.1920.1040" timestamp="1616397949799" />
+    <state width="289" height="379" key="Git.Branch.Popup" timestamp="1616217406445">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state width="1877" height="385" key="GridCell.Tab.0.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1615889667308" />
-    <state width="1877" height="385" key="GridCell.Tab.0.center" timestamp="1615889667308">
+    <state width="289" height="379" key="Git.Branch.Popup/0.0.1920.1040@0.0.1920.1040" timestamp="1616217406445" />
+    <state width="1877" height="322" key="GridCell.Tab.0.bottom" timestamp="1616397952636">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state width="1877" height="385" key="GridCell.Tab.0.center/0.0.1920.1040@0.0.1920.1040" timestamp="1615889667308" />
-    <state width="1877" height="385" key="GridCell.Tab.0.left" timestamp="1615889667308">
+    <state width="1877" height="322" key="GridCell.Tab.0.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1616397952636" />
+    <state width="1877" height="322" key="GridCell.Tab.0.center" timestamp="1616397952636">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state width="1877" height="385" key="GridCell.Tab.0.left/0.0.1920.1040@0.0.1920.1040" timestamp="1615889667308" />
-    <state width="1877" height="385" key="GridCell.Tab.0.right" timestamp="1615889667308">
+    <state width="1877" height="322" key="GridCell.Tab.0.center/0.0.1920.1040@0.0.1920.1040" timestamp="1616397952636" />
+    <state width="1877" height="322" key="GridCell.Tab.0.left" timestamp="1616397952636">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state width="1877" height="385" key="GridCell.Tab.0.right/0.0.1920.1040@0.0.1920.1040" timestamp="1615889667308" />
-    <state width="1877" height="385" key="GridCell.Tab.1.bottom" timestamp="1615889660605">
+    <state width="1877" height="322" key="GridCell.Tab.0.left/0.0.1920.1040@0.0.1920.1040" timestamp="1616397952636" />
+    <state width="1877" height="322" key="GridCell.Tab.0.right" timestamp="1616397952636">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state width="1877" height="385" key="GridCell.Tab.1.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1615889660605" />
-    <state width="1877" height="385" key="GridCell.Tab.1.center" timestamp="1615889660605">
+    <state width="1877" height="322" key="GridCell.Tab.0.right/0.0.1920.1040@0.0.1920.1040" timestamp="1616397952636" />
+    <state width="1877" height="322" key="GridCell.Tab.1.bottom" timestamp="1616342796612">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state width="1877" height="385" key="GridCell.Tab.1.center/0.0.1920.1040@0.0.1920.1040" timestamp="1615889660605" />
-    <state width="1877" height="385" key="GridCell.Tab.1.left" timestamp="1615889660605">
+    <state width="1877" height="322" key="GridCell.Tab.1.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1616342796612" />
+    <state width="1877" height="322" key="GridCell.Tab.1.center" timestamp="1616342796612">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state width="1877" height="385" key="GridCell.Tab.1.left/0.0.1920.1040@0.0.1920.1040" timestamp="1615889660605" />
-    <state width="1877" height="385" key="GridCell.Tab.1.right" timestamp="1615889660605">
+    <state width="1877" height="322" key="GridCell.Tab.1.center/0.0.1920.1040@0.0.1920.1040" timestamp="1616342796612" />
+    <state width="1877" height="322" key="GridCell.Tab.1.left" timestamp="1616342796612">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state width="1877" height="385" key="GridCell.Tab.1.right/0.0.1920.1040@0.0.1920.1040" timestamp="1615889660605" />
-    <state width="1877" height="385" key="GridCell.Tab.2.bottom" timestamp="1615889660606">
+    <state width="1877" height="322" key="GridCell.Tab.1.left/0.0.1920.1040@0.0.1920.1040" timestamp="1616342796612" />
+    <state width="1877" height="322" key="GridCell.Tab.1.right" timestamp="1616342796612">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state width="1877" height="385" key="GridCell.Tab.2.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1615889660606" />
-    <state width="1877" height="385" key="GridCell.Tab.2.center" timestamp="1615889660605">
+    <state width="1877" height="322" key="GridCell.Tab.1.right/0.0.1920.1040@0.0.1920.1040" timestamp="1616342796612" />
+    <state width="1877" height="285" key="GridCell.Tab.2.bottom" timestamp="1616256896660">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state width="1877" height="385" key="GridCell.Tab.2.center/0.0.1920.1040@0.0.1920.1040" timestamp="1615889660605" />
-    <state width="1877" height="385" key="GridCell.Tab.2.left" timestamp="1615889660605">
+    <state width="1877" height="285" key="GridCell.Tab.2.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1616256896660" />
+    <state width="1877" height="285" key="GridCell.Tab.2.center" timestamp="1616256896660">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state width="1877" height="385" key="GridCell.Tab.2.left/0.0.1920.1040@0.0.1920.1040" timestamp="1615889660605" />
-    <state width="1877" height="385" key="GridCell.Tab.2.right" timestamp="1615889660605">
+    <state width="1877" height="285" key="GridCell.Tab.2.center/0.0.1920.1040@0.0.1920.1040" timestamp="1616256896660" />
+    <state width="1877" height="285" key="GridCell.Tab.2.left" timestamp="1616256896660">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state width="1877" height="385" key="GridCell.Tab.2.right/0.0.1920.1040@0.0.1920.1040" timestamp="1615889660605" />
+    <state width="1877" height="285" key="GridCell.Tab.2.left/0.0.1920.1040@0.0.1920.1040" timestamp="1616256896660" />
+    <state width="1877" height="285" key="GridCell.Tab.2.right" timestamp="1616256896660">
+      <screen x="0" y="0" width="1920" height="1040" />
+    </state>
+    <state width="1877" height="285" key="GridCell.Tab.2.right/0.0.1920.1040@0.0.1920.1040" timestamp="1616256896660" />
     <state x="490" y="174" key="Maven.ArtifactSearchDialog" timestamp="1615427932582">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
     <state x="490" y="174" key="Maven.ArtifactSearchDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1615427932582" />
-    <state x="461" y="164" key="SettingsEditor" timestamp="1615431876749">
+    <state x="461" y="164" key="SettingsEditor" timestamp="1616142353333">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state x="461" y="164" key="SettingsEditor/0.0.1920.1040@0.0.1920.1040" timestamp="1615431876749" />
-    <state x="552" y="252" key="Vcs.Push.Dialog.v2" timestamp="1615460743690">
+    <state x="461" y="164" key="SettingsEditor/0.0.1920.1040@0.0.1920.1040" timestamp="1616142353333" />
+    <state x="552" y="252" key="Vcs.Push.Dialog.v2" timestamp="1616217407848">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state x="552" y="252" key="Vcs.Push.Dialog.v2/0.0.1920.1040@0.0.1920.1040" timestamp="1615460743690" />
-    <state width="968" height="528" key="XDebugger.FullValuePopup" timestamp="1615866063087">
+    <state x="552" y="252" key="Vcs.Push.Dialog.v2/0.0.1920.1040@0.0.1920.1040" timestamp="1616217407848" />
+    <state width="968" height="528" key="XDebugger.FullValuePopup" timestamp="1616223565788">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state width="968" height="528" key="XDebugger.FullValuePopup/0.0.1920.1040@0.0.1920.1040" timestamp="1615866063087" />
-    <state x="754" y="432" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2" timestamp="1615427969273">
+    <state width="968" height="528" key="XDebugger.FullValuePopup/0.0.1920.1040@0.0.1920.1040" timestamp="1616223565788" />
+    <state x="754" y="432" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2" timestamp="1616217352314">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state x="754" y="432" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2/0.0.1920.1040@0.0.1920.1040" timestamp="1615427969273" />
-    <state x="1083" y="283" width="603" height="748" key="find.popup" timestamp="1615866113491">
+    <state x="754" y="432" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2/0.0.1920.1040@0.0.1920.1040" timestamp="1616217352314" />
+    <state x="967" y="100" width="719" height="931" key="find.popup" timestamp="1616396725972">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state x="1083" y="283" width="603" height="748" key="find.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1615866113491" />
+    <state x="967" y="100" width="719" height="931" key="find.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1616396725972" />
     <state x="761" y="426" key="git4idea.remote.GitConfigureRemotesDialog" timestamp="1615460537318">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
     <state x="761" y="426" key="git4idea.remote.GitConfigureRemotesDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1615460537318" />
-    <state x="616" y="240" width="672" height="677" key="run.anything.popup" timestamp="1615795422622">
+    <state x="616" y="240" width="672" height="677" key="run.anything.popup" timestamp="1616386192087">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state x="616" y="240" width="672" height="677" key="run.anything.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1615795422622" />
-    <state x="623" y="225" width="672" height="678" key="search.everywhere.popup" timestamp="1615864418427">
+    <state x="616" y="240" width="672" height="677" key="run.anything.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1616386192087" />
+    <state x="623" y="225" width="672" height="678" key="search.everywhere.popup" timestamp="1616396723231">
       <screen x="0" y="0" width="1920" height="1040" />
     </state>
-    <state x="623" y="225" width="672" height="678" key="search.everywhere.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1615864418427" />
+    <state x="623" y="225" width="672" height="678" key="search.everywhere.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1616396723231" />
   </component>
   <component name="XDebuggerManager">
     <breakpoint-manager>
@@ -337,17 +367,17 @@
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java</url>
-          <line>851</line>
+          <line>854</line>
           <option name="timeStamp" value="22" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java</url>
-          <line>700</line>
+          <line>706</line>
           <option name="timeStamp" value="23" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java</url>
-          <line>679</line>
+          <line>685</line>
           <option name="timeStamp" value="25" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
@@ -357,7 +387,7 @@
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java</url>
-          <line>339</line>
+          <line>345</line>
           <option name="timeStamp" value="27" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
@@ -367,7 +397,7 @@
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java</url>
-          <line>300</line>
+          <line>306</line>
           <option name="timeStamp" value="31" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
@@ -407,12 +437,12 @@
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java</url>
-          <line>486</line>
+          <line>492</line>
           <option name="timeStamp" value="41" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java</url>
-          <line>555</line>
+          <line>561</line>
           <option name="timeStamp" value="42" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
@@ -422,7 +452,7 @@
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java</url>
-          <line>507</line>
+          <line>513</line>
           <option name="timeStamp" value="44" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
@@ -436,14 +466,39 @@
           <option name="timeStamp" value="49" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java</url>
-          <line>619</line>
-          <option name="timeStamp" value="50" />
+          <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java</url>
+          <line>1259</line>
+          <option name="timeStamp" value="52" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>jar://$PROJECT_DIR$/jar/tai-ots-framework.jar!/com/ots/project/tool/exam/ImageUtil.class</url>
-          <line>135</line>
-          <option name="timeStamp" value="51" />
+          <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java</url>
+          <line>180</line>
+          <option name="timeStamp" value="53" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java</url>
+          <line>285</line>
+          <option name="timeStamp" value="54" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/controller/TExamPaperController.java</url>
+          <line>377</line>
+          <option name="timeStamp" value="57" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/restcontroller/ExamPaperAnswerController.java</url>
+          <line>80</line>
+          <option name="timeStamp" value="63" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/ots/project/exam/restcontroller/ExamPaperAnswerController.java</url>
+          <line>514</line>
+          <option name="timeStamp" value="64" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="javascript">
+          <url>file://$PROJECT_DIR$/src/main/resources/static/ots/js/ry-ui.js</url>
+          <line>750</line>
+          <option name="timeStamp" value="61" />
         </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>
diff --git a/jar/tai-ots-framework.jar b/jar/tai-ots-framework.jar
index c9608bf..f8c6c8d 100644
--- a/jar/tai-ots-framework.jar
+++ b/jar/tai-ots-framework.jar
Binary files differ
diff --git a/src/main/java/com/ots/project/exam/mapper/EntDemographyInfoMapper.java b/src/main/java/com/ots/project/exam/mapper/EntDemographyInfoMapper.java
index 50f9824..f112bf0 100644
--- a/src/main/java/com/ots/project/exam/mapper/EntDemographyInfoMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/EntDemographyInfoMapper.java
@@ -60,4 +60,11 @@
      * @return 缁撴灉
      */
     int deleteEntDemographyInfoByIds(String[] infoIds);
+
+    /**
+     * 鑾峰彇闂嵎璇█
+     * @param memberId
+     * @return
+     */
+    String getlangType(Long memberId);
 }
diff --git a/src/main/java/com/ots/project/exam/service/IEntDemographyInfoService.java b/src/main/java/com/ots/project/exam/service/IEntDemographyInfoService.java
index 405945c..6216e4f 100644
--- a/src/main/java/com/ots/project/exam/service/IEntDemographyInfoService.java
+++ b/src/main/java/com/ots/project/exam/service/IEntDemographyInfoService.java
@@ -60,4 +60,11 @@
      * @return 缁撴灉
      */
     int deleteEntDemographyInfoById(Long infoId);
+
+    /***
+     * 鑾峰彇濉啓璇█
+     * @param memberId
+     * @return
+     */
+    String getlangType(Long memberId);
 }
diff --git a/src/main/java/com/ots/project/exam/service/impl/EntDemographyInfoServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/EntDemographyInfoServiceImpl.java
index 777b6ad..eb75c62 100644
--- a/src/main/java/com/ots/project/exam/service/impl/EntDemographyInfoServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/EntDemographyInfoServiceImpl.java
@@ -92,4 +92,14 @@
     public int deleteEntDemographyInfoById(Long infoId) {
         return entDemographyInfoMapper.deleteEntDemographyInfoById(infoId);
     }
+
+    /**
+     * 鑾峰彇闂嵎璇█
+     * @param memberId
+     * @return
+     */
+    @Override
+    public String getlangType(Long memberId) {
+        return entDemographyInfoMapper.getlangType(memberId);
+    }
 }
diff --git a/src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java
index 7a54b0a..2bab5f6 100644
--- a/src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java
@@ -3,6 +3,8 @@
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.ots.common.enums.LangTypeEnum;
+import com.ots.common.enums.ReportTitle;
 import com.ots.common.enums.SenderCode;
 import com.ots.common.enums.UserTypeEnum;
 import com.ots.common.utils.DateUtils;
@@ -32,6 +34,7 @@
 import com.ots.project.tool.report.reportCalculation.request.*;
 import com.ots.project.tool.report.reportCalculation.response.ReportAPIResult;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.velocity.runtime.directive.Foreach;
 import org.modelmapper.ModelMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -859,7 +862,11 @@
         }
 
         // 璋冪敤鍙戦�佺▼搴忓彂缁欑敤鎴�
-        String title = tExamReportResult.getMemberName() + MessageUtils.message("jsp.exam.quesiton.reportTilte");
+        //String title = tExamReportResult.getMemberName() + MessageUtils.message("jsp.exam.quesiton.reportTilte");
+        String title = getTitle(tExamReportResult);
+
+        log.error("鎶ュ憡鏍囬:{}",title);
+
         String content = tExamReportResult.getMailContent();
         StringBuilder remark = new StringBuilder();
         remark.append("澶辫触閭锛�");
@@ -1246,4 +1253,40 @@
     }
 
 
+    /***
+     * 鑾峰彇鎶ュ憡濉啓璇█,杩斿洖鏍囬
+     */
+    private String getTitle(TExamReport tExamReportResult){
+        String title = tExamReportResult.getMemberName() + MessageUtils.message("jsp.exam.quesiton.reportTilte");
+        //鎶ュ憡鍐呭璺熸祴璇曚骇鍝佸悕绉颁笉涓虹┖
+        if(StringUtils.isNotEmpty(tExamReportResult.getContent()) && StringUtils.isNotEmpty(tExamReportResult.getProductName())){
+            JSONArray content = JSONObject.parseArray(tExamReportResult.getContent());
+            //鑾峰彇璇█
+            String langType = content.getJSONObject(0).getString("langType");
+            String field = ReportTitle.getField(langType);
+            String name = "";
+            for (int i = 0; i < content.size(); i++) {
+                JSONObject jsonObject = content.getJSONObject(i);
+                if(StringUtils.isNotEmpty(field) && field.equals(jsonObject.getString("field"))){
+                    name = jsonObject.getString("value");
+                    break;
+                }
+            }
+
+            //鑾峰彇浜у搧鍚嶇О
+            JSONObject productNameObj = JSONObject.parseObject(tExamReportResult.getProductName());
+            String productName = productNameObj.getString(langType);
+
+            if(StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(productName) && StringUtils.isNotEmpty(langType)){
+                //娉版枃鏄厛鎶ュ憡鍚嶇О鍚庡鍚� 鍏朵粬鐩稿弽
+                if(langType.equals(LangTypeEnum.Thai.getCode())){
+                    title = String.format(ReportTitle.getReportTitle(langType),productName,name);
+                }else{
+                    title = String.format(ReportTitle.getReportTitle(langType),name,productName);
+                }
+            }
+        }
+        return title;
+    }
+
 }
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 227737f..56beefc 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -9,15 +9,15 @@
     # 瀹炰緥婕旂ず寮�鍏�
     demoEnabled: false
     # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ots/uploadPath锛孡inux閰嶇疆 /home/data/ots/uploadPath锛�
-    profile: D:/娴嬭瘎绯荤粺/home/uploadPath
+    profile: /home/data/ots/uploadPath
     # 鍥剧墖鐨剈rl锛屽:vue绔http://139.199.11.114/images鍦板潃
-    imagePath: http://127.0.0.1:8090/profile/images
+    imagePath: http://47.114.179.216:8090/profile/images
     # 鑾峰彇ip鍦板潃寮�鍏�
     addressEnabled: true
     # 鎶ュ憡妯$増鍦板潃
-    reportTemplates: D:/娴嬭瘎绯荤粺/home/reportTemplates/
+    reportTemplates: /home/data/ots/reportTemplates/
     # http profile
-    httpProfilePath: http://127.0.0.1:8090/profile
+    httpProfilePath: http://47.114.179.216:8090/profile
 # 鏁版嵁婧愰厤缃�
 spring:
     datasource:
@@ -26,16 +26,16 @@
         druid:
             # 涓诲簱鏁版嵁婧�
             master:
-                url: jdbc:mysql://192.168.21.252:3306/ots-sand?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://47.114.179.216:3306/ots-sand?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: root
-                password: Cc19970921
+                password: TAI@2019#Zjun
             # 浠庡簱鏁版嵁婧�
             slave:
                 # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
                 enabled: false
-                url: 
-                username: 
-                password: 
+                url:
+                username:
+                password:
             # 鍒濆杩炴帴鏁�
             initialSize: 5
             # 鏈�灏忚繛鎺ユ睜鏁伴噺
@@ -55,7 +55,7 @@
             testWhileIdle: true
             testOnBorrow: false
             testOnReturn: false
-            webStatFilter: 
+            webStatFilter:
                 enabled: true
             statViewServlet:
                 enabled: true
@@ -63,8 +63,8 @@
                 allow:
                 url-pattern: /druid/*
                 # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
-                login-username: 
-                login-password: 
+                login-username:
+                login-password:
             filter:
                 stat:
                     enabled: true
@@ -80,11 +80,11 @@
 
 # VUE绔闂湴鍧�
 vue:
-    url: http://192.168.21.252:8080/exam-stu/#/ots/{0}/login
+    url: http://47.114.179.216/exam-stu/#/ots/{0}/login
 
 # 杩滅▼娉板浗璁$畻鏈嶅姟
 ATSTai:
-    host: 192.168.21.252
+    host: 127.0.0.1
     port: 9123
 jasypt:
     encryptor:
diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml
index 6d7195f..457903c 100644
--- a/src/main/resources/application-local.yml
+++ b/src/main/resources/application-local.yml
@@ -7,13 +7,17 @@
     # 鐗堟潈骞翠唤
     copyrightYear: 2020
     # 瀹炰緥婕旂ず寮�鍏�
-    demoEnabled: true
+    demoEnabled: false
     # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ots/uploadPath锛孡inux閰嶇疆 /home/data/ots/uploadPath锛�
-    profile: /home/data/ots/uploadPath
+    profile: D:/娴嬭瘎绯荤粺/home/uploadPath
     # 鍥剧墖鐨剈rl锛屽:vue绔http://139.199.11.114/images鍦板潃
-    imagePath: http://localhost:8090/profile/images
+    imagePath: http://127.0.0.1:8090/profile/images
     # 鑾峰彇ip鍦板潃寮�鍏�
     addressEnabled: true
+    # 鎶ュ憡妯$増鍦板潃
+    reportTemplates: D:/娴嬭瘎绯荤粺/home/reportTemplates/
+    # http profile
+    httpProfilePath: http://127.0.0.1:8090/profile
 # 鏁版嵁婧愰厤缃�
 spring:
     datasource:
@@ -22,17 +26,16 @@
         druid:
             # 涓诲簱鏁版嵁婧�
             master:
-                url: jdbc:mysql://127.0.0.1:3306/ess_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-#                url: jdbc:mysql://192.168.77.29:3306/ess?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://192.168.8.171:3306/ots-sand?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: root
-                password: perfect
+                password: Cc19970921
             # 浠庡簱鏁版嵁婧�
             slave:
                 # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
                 enabled: false
-                url: 
-                username: 
-                password: 
+                url:
+                username:
+                password:
             # 鍒濆杩炴帴鏁�
             initialSize: 5
             # 鏈�灏忚繛鎺ユ睜鏁伴噺
@@ -52,7 +55,7 @@
             testWhileIdle: true
             testOnBorrow: false
             testOnReturn: false
-            webStatFilter: 
+            webStatFilter:
                 enabled: true
             statViewServlet:
                 enabled: true
@@ -60,8 +63,8 @@
                 allow:
                 url-pattern: /druid/*
                 # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
-                login-username: 
-                login-password: 
+                login-username:
+                login-password:
             filter:
                 stat:
                     enabled: true
@@ -77,9 +80,13 @@
 
 # VUE绔闂湴鍧�
 vue:
-    url: http://139.199.11.114/exam-stu/#/ots/{0}/login
+    url: http://localhost:82/#/ots/{0}/login
 
 # 杩滅▼娉板浗璁$畻鏈嶅姟
 ATSTai:
-    host: 120.24.39.179
-    port: 9123
\ No newline at end of file
+    host: 192.168.8.171
+    port: 9123
+jasypt:
+    encryptor:
+        password: 5ciqxnka5s02w9qu
+        algorithm: PBEWithMD5AndDES
\ No newline at end of file
diff --git a/src/main/resources/mybatis/exam/EntDemographyInfoMapper.xml b/src/main/resources/mybatis/exam/EntDemographyInfoMapper.xml
index 47239b7..bb575b0 100644
--- a/src/main/resources/mybatis/exam/EntDemographyInfoMapper.xml
+++ b/src/main/resources/mybatis/exam/EntDemographyInfoMapper.xml
@@ -115,5 +115,8 @@
         </where>
         order by info_id
     </select>
-    
+    <select id="getlangType" resultType="java.lang.String">
+        SELECT lang_type FROM ent_demography_info where member_id = #{memberId} LIMIT 0,1
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1