夏文涛 2 лет назад
Родитель
Сommit
564213d4ec

+ 365 - 11
.idea/workspace.xml

@@ -2,18 +2,142 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="36922be1-416a-4a25-9739-9814e01883a6" name="Default Changelist" comment="">
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/common/utils/TimeExchange.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/common/utils/TimeExchange.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/template/controller/SmartAttendanceController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/controller/SmartAttendanceController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/SmartAttendanceService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/SmartAttendanceService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/SmartUserService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/SmartUserService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartAttendanceServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartAttendanceServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUserServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUserServiceImpl.java" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/classes/" />
+    <ignored path="$PROJECT_DIR$/target/" />
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
     <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
     <option name="LAST_RESOLUTION" value="IGNORE" />
   </component>
+  <component name="DefaultGradleProjectSettings">
+    <option name="testRunner" value="GRADLE" />
+    <option name="delegatedBuild" value="true" />
+  </component>
+  <component name="FileEditorManager">
+    <leaf>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartAttendanceController.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="327">
+              <caret line="155" column="13" lean-forward="true" selection-start-line="155" selection-start-column="13" selection-end-line="155" selection-end-column="13" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/ScheduleController.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="1031">
+              <caret line="176" column="75" selection-start-line="176" selection-start-column="66" selection-end-line="176" selection-end-column="75" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/pojo/SmartAttendance.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="264">
+              <caret line="49" column="26" selection-start-line="49" selection-start-column="19" selection-end-line="49" selection-end-column="26" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/SmartUserService.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="425">
+              <caret line="71" column="62" selection-start-line="71" selection-start-column="62" selection-end-line="71" selection-end-column="62" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUserServiceImpl.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="218">
+              <caret line="156" column="47" selection-start-line="156" selection-start-column="27" selection-end-line="156" selection-end-column="47" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartApplyController.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="310">
+              <caret line="38" column="4" selection-start-line="38" selection-start-column="4" selection-end-line="38" selection-end-column="14" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/api/SmartAttendanceControllerAPI.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="333">
+              <caret line="38" column="43" selection-start-line="38" selection-start-column="26" selection-end-line="38" selection-end-column="43" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartAttendanceServiceImpl.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="631">
+              <caret line="53" column="40" selection-start-line="53" selection-start-column="19" selection-end-line="53" selection-end-column="40" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/SmartAttendanceService.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="391">
+              <caret line="21" column="69" lean-forward="true" selection-start-line="21" selection-start-column="69" selection-end-line="21" selection-end-column="69" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartVisitorServiceImpl.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="295">
+              <caret line="67" column="8" lean-forward="true" selection-start-line="67" selection-start-column="8" selection-end-line="68" selection-end-column="22" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="FindInProjectRecents">
+    <findStrings>
+      <find>getDate</find>
+      <find>开始时间</find>
+      <find>结束时间</find>
+      <find>saveBa</find>
+    </findStrings>
+  </component>
   <component name="Git.Settings">
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
   </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/src/main/java/com/template/common/utils/TimeExchange.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/services/SmartAttendanceService.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartAttendanceServiceImpl.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/services/SmartUserService.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUserServiceImpl.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/controller/SmartAttendanceController.java" />
+      </list>
+    </option>
+  </component>
   <component name="MavenImportPreferences">
     <option name="generalSettings">
       <MavenGeneralSettings>
@@ -22,10 +146,30 @@
       </MavenGeneralSettings>
     </option>
   </component>
-  <component name="ProjectFrameBounds">
-    <option name="x" value="-7" />
-    <option name="width" value="974" />
-    <option name="height" value="1039" />
+  <component name="MavenProjectNavigator">
+    <treeState>
+      <expand>
+        <path>
+          <item name="" type="16c1761:MavenProjectsStructure$RootNode" />
+          <item name="mybatis_plus" type="9519ce18:MavenProjectsStructure$ProjectNode" />
+        </path>
+        <path>
+          <item name="" type="16c1761:MavenProjectsStructure$RootNode" />
+          <item name="mybatis_plus" type="9519ce18:MavenProjectsStructure$ProjectNode" />
+          <item name="Lifecycle" type="58874e2:MavenProjectsStructure$LifecycleNode" />
+        </path>
+      </expand>
+      <select />
+    </treeState>
+  </component>
+  <component name="MavenRunner">
+    <option name="skipTests" value="true" />
+  </component>
+  <component name="ProjectFrameBounds" extendedState="6">
+    <option name="x" value="-8" />
+    <option name="y" value="-8" />
+    <option name="width" value="1936" />
+    <option name="height" value="1048" />
   </component>
   <component name="ProjectView">
     <navigator proportions="" version="1">
@@ -34,7 +178,99 @@
     <panes>
       <pane id="Scope" />
       <pane id="PackagesPane" />
-      <pane id="ProjectPane" />
+      <pane id="ProjectPane">
+        <subPane>
+          <expand>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="backend_code" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="backend_code" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="backend_code" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="backend_code" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="backend_code" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="template" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="backend_code" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="template" type="462c0819:PsiDirectoryNode" />
+              <item name="api" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="backend_code" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="template" type="462c0819:PsiDirectoryNode" />
+              <item name="controller" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="backend_code" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="template" type="462c0819:PsiDirectoryNode" />
+              <item name="model" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="backend_code" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="template" type="462c0819:PsiDirectoryNode" />
+              <item name="model" type="462c0819:PsiDirectoryNode" />
+              <item name="enumModel" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="backend_code" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="template" type="462c0819:PsiDirectoryNode" />
+              <item name="services" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="backend_code" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="template" type="462c0819:PsiDirectoryNode" />
+              <item name="services" type="462c0819:PsiDirectoryNode" />
+              <item name="impl" type="462c0819:PsiDirectoryNode" />
+            </path>
+          </expand>
+          <select />
+        </subPane>
+      </pane>
     </panes>
   </component>
   <component name="PropertiesComponent">
@@ -83,12 +319,12 @@
       <option name="number" value="Default" />
       <option name="presentableId" value="Default" />
       <updated>1706250884671</updated>
-      <workItem from="1706250887209" duration="7000" />
+      <workItem from="1706250887209" duration="5674000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="7000" />
+    <option name="totallyTimeSpent" value="5674000" />
   </component>
   <component name="ToolWindowManager">
     <frame x="-8" y="-8" width="1936" height="1048" extended-state="6" />
@@ -99,28 +335,34 @@
       <window_info id="UI Designer" />
       <window_info id="Favorites" side_tool="true" />
       <window_info id="Designer" />
-      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.25" />
+      <window_info id="Web" side_tool="true" />
+      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.46481878" />
       <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
+      <window_info anchor="bottom" id="Spring" />
       <window_info anchor="bottom" id="Event Log" side_tool="true" />
       <window_info anchor="bottom" id="Terminal" />
       <window_info anchor="bottom" id="Docker" />
+      <window_info anchor="bottom" id="Messages" />
+      <window_info anchor="bottom" id="Java Enterprise" />
       <window_info anchor="bottom" id="Database Changes" />
       <window_info anchor="bottom" id="Version Control" />
+      <window_info anchor="bottom" id="JRebel Executor" />
       <window_info anchor="bottom" id="JRebel Console" side_tool="true" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" />
-      <window_info anchor="bottom" id="Run" order="2" />
-      <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
+      <window_info anchor="bottom" id="Run" order="2" weight="0.32928178" />
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.39606127" />
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
       <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
       <window_info anchor="bottom" id="TODO" order="6" />
-      <window_info anchor="right" id="Maven" />
+      <window_info anchor="right" id="Maven" weight="0.32932165" />
       <window_info anchor="right" id="Palette" />
       <window_info anchor="right" id="Capture Analysis" />
       <window_info anchor="right" id="Database" />
       <window_info anchor="right" id="Palette&#9;" />
       <window_info anchor="right" id="Theme Preview" />
       <window_info anchor="right" id="JRebel Setup Guide" side_tool="true" />
+      <window_info anchor="right" id="Bean Validation" />
       <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
       <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
       <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
@@ -129,6 +371,118 @@
   <component name="TypeScriptGeneratedFilesManager">
     <option name="version" value="1" />
   </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager>
+      <breakpoints>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartAttendanceController.java</url>
+          <line>70</line>
+          <properties />
+          <option name="timeStamp" value="1" />
+        </line-breakpoint>
+      </breakpoints>
+    </breakpoint-manager>
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/HikvisionController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="368">
+          <caret line="42" column="13" lean-forward="true" selection-start-line="42" selection-start-column="13" selection-end-line="42" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/enumModel/eAttendanceStatu.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="322">
+          <caret line="14" column="28" selection-start-line="14" selection-start-column="12" selection-end-line="14" selection-end-column="28" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/common/utils/TimeExchange.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="137">
+          <caret line="203" column="37" selection-start-line="203" selection-start-column="25" selection-end-line="203" selection-end-column="37" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartVisitorServiceImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="295">
+          <caret line="67" column="8" lean-forward="true" selection-start-line="67" selection-start-column="8" selection-end-line="68" selection-end-column="22" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/SmartAttendanceService.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="391">
+          <caret line="21" column="69" lean-forward="true" selection-start-line="21" selection-start-column="69" selection-end-line="21" selection-end-column="69" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartAttendanceServiceImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="631">
+          <caret line="53" column="40" selection-start-line="53" selection-start-column="19" selection-end-line="53" selection-end-column="40" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/api/SmartAttendanceControllerAPI.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="333">
+          <caret line="38" column="43" selection-start-line="38" selection-start-column="26" selection-end-line="38" selection-end-column="43" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartApplyController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="310">
+          <caret line="38" column="4" selection-start-line="38" selection-start-column="4" selection-end-line="38" selection-end-column="14" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/SmartUserService.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="425">
+          <caret line="71" column="62" selection-start-line="71" selection-start-column="62" selection-end-line="71" selection-end-column="62" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUserServiceImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="218">
+          <caret line="156" column="47" selection-start-line="156" selection-start-column="27" selection-end-line="156" selection-end-column="47" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/pojo/SmartUser.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="195">
+          <caret line="118" column="19" selection-start-line="118" selection-start-column="19" selection-end-line="118" selection-end-column="19" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/pojo/SmartAttendance.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="264">
+          <caret line="49" column="26" selection-start-line="49" selection-start-column="19" selection-end-line="49" selection-end-column="26" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartAttendanceController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="327">
+          <caret line="155" column="13" lean-forward="true" selection-start-line="155" selection-start-column="13" selection-end-line="155" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/ScheduleController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1031">
+          <caret line="176" column="75" selection-start-line="176" selection-start-column="66" selection-end-line="176" selection-end-column="75" />
+        </state>
+      </provider>
+    </entry>
+  </component>
   <component name="masterDetails">
     <states>
       <state key="ProjectJDKs.UI">

+ 24 - 0
src/main/java/com/template/common/utils/TimeExchange.java

@@ -200,6 +200,30 @@ public class TimeExchange {
         return simpleDateFormat.format(nowTime2.getTime());
     }
 
+    // 获取当天开始时间
+    public static String getStartDate() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(new Date());
+        int year = calendar.get(Calendar.YEAR);
+        int month = calendar.get(Calendar.MONTH);
+        int day = calendar.get(Calendar.DATE);
+        calendar.setTimeInMillis(0);
+        calendar.set(year, month, day, 0, 0, 0);
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
+    }
+
+    // 获取当天结束时间
+    public static String getEndDate() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(new Date());
+        int year = calendar.get(Calendar.YEAR);
+        int month = calendar.get(Calendar.MONTH);
+        int day = calendar.get(Calendar.DATE);
+        calendar.setTimeInMillis(0);
+        calendar.set(year, month, day, 23, 59, 59);
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
+    }
+
     // 获取当前日期
     public static String getDate() {
         SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd");

+ 64 - 18
src/main/java/com/template/controller/SmartAttendanceController.java

@@ -14,6 +14,9 @@ import com.template.model.result.CommonResult;
 import com.template.model.seewo.PersonalLeaveListSchoolPeriodRecordsParam;
 import com.template.model.seewo.PersonalLeaveListSchoolPeriodRecordsRequest;
 import com.template.model.seewo.PersonalLeaveListSchoolPeriodRecordsResult;
+import com.template.services.SmartAttendanceService;
+import com.template.services.SmartUserService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
 
 import org.springframework.web.bind.annotation.RestController;
@@ -21,6 +24,8 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -35,6 +40,11 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
 
     @Resource
     private SeewoConfig seewoConfig;
+    @Autowired
+    private SmartUserService smartUserService;
+    @Autowired
+    private SmartAttendanceService smartAttendanceService;
+
 
     @Override
     public CommonResult insertSmartAttendance(SmartAttendance smartApply, BindingResult bindingResult) {
@@ -58,11 +68,11 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
 
     @Override
     public CommonResult queryLeaveRecords() {
-        int findPageSize =20;
+        int findPageSize = 20;
 
         PersonalLeaveListSchoolPeriodRecordsResult result = getXwAttendance(TimeExchange.getDate(), TimeExchange.getDate(), 1, findPageSize);
         if (result == null) {
-            return CommonResult.fail("希沃学生家长数据添加失败!");
+            return CommonResult.fail("当天不存在请假数据!");
         }
 
         if (!result.getResponseBody().getCode().equals("000000")) {
@@ -92,28 +102,64 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
             int totalCount = result.getResponseBody().getData().getTotalCount().intValue();
             int pageSize = result.getResponseBody().getData().getPageSize().intValue();
             int totalPage = (totalCount + pageSize - 1) / pageSize;
-            for (int i = 2;i<=totalPage;i++){
+            for (int i = 2; i <= totalPage; i++) {
                 PersonalLeaveListSchoolPeriodRecordsResult nextResult = getXwAttendance(TimeExchange.getDate(), TimeExchange.getDate(), i, findPageSize);
-                if (result.getResponseBody().getData().getResult().get(i).getLeaveStatus().intValue() == eXwApproveStatu.Passed.getValue()) {
-                    SmartAttendance attendance = new SmartAttendance();
-                    attendance.setXwuid(result.getResponseBody().getData().getResult().get(i).getUid());
-                    attendance.setUserUid(result.getResponseBody().getData().getResult().get(i).getUserUid());
-                    attendance.setXwUserName(result.getResponseBody().getData().getResult().get(i).getUserName());
-                    attendance.setReason(result.getResponseBody().getData().getResult().get(i).getReason());
-                    attendance.setStartTime(TimeExchange.StringToDate(result.getResponseBody().getData().getResult().get(i).getStartTime(), "yyyy-MM-dd HH:mm:ss"));
-                    attendance.setEndTime(TimeExchange.StringToDate(result.getResponseBody().getData().getResult().get(i).getEndTime(), "yyyy-MM-dd HH:mm:ss"));
-                    attendance.setInitiateTime(TimeExchange.StringToDate(result.getResponseBody().getData().getResult().get(i).getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
-                    attendance.setInitiateXwuid(result.getResponseBody().getData().getResult().get(i).getApplyUserUid());
-                    attendance.setInitiateXwname(result.getResponseBody().getData().getResult().get(i).getApplyUserName());
-                    attendance.setInitiateXwphone(result.getResponseBody().getData().getResult().get(i).getApplyUserPhone());
-                    attendance.setStatus(eAttendanceStatu.AskLeave.getValue());
-                    attendances.add(attendance);
+                if (nextResult == null) {
+                    return CommonResult.fail("当天不存在请假数据!");
+                }
+
+                if (!nextResult.getResponseBody().getCode().equals("000000")) {
+                    return CommonResult.fail(result.getResponseBody().getMessage());
+                }
+                for (int j = 0; j < result.getResponseBody().getData().getTotalCount(); j++) {
+                    if (result.getResponseBody().getData().getResult().get(j).getLeaveStatus().intValue() == eXwApproveStatu.Passed.getValue()) {
+                        SmartAttendance attendance = new SmartAttendance();
+                        attendance.setXwuid(result.getResponseBody().getData().getResult().get(j).getUid());
+                        attendance.setUserUid(result.getResponseBody().getData().getResult().get(j).getUserUid());
+                        attendance.setXwUserName(result.getResponseBody().getData().getResult().get(j).getUserName());
+                        attendance.setReason(result.getResponseBody().getData().getResult().get(j).getReason());
+                        attendance.setStartTime(TimeExchange.StringToDate(result.getResponseBody().getData().getResult().get(j).getStartTime(), "yyyy-MM-dd HH:mm:ss"));
+                        attendance.setEndTime(TimeExchange.StringToDate(result.getResponseBody().getData().getResult().get(j).getEndTime(), "yyyy-MM-dd HH:mm:ss"));
+                        attendance.setInitiateTime(TimeExchange.StringToDate(result.getResponseBody().getData().getResult().get(j).getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
+                        attendance.setInitiateXwuid(result.getResponseBody().getData().getResult().get(j).getApplyUserUid());
+                        attendance.setInitiateXwname(result.getResponseBody().getData().getResult().get(j).getApplyUserName());
+                        attendance.setInitiateXwphone(result.getResponseBody().getData().getResult().get(j).getApplyUserPhone());
+                        attendance.setStatus(eAttendanceStatu.AskLeave.getValue());
+                        attendances.add(attendance);
+                    }
+                }
+            }
+        }
+        //获取当天的请假数据中是否存在重复的
+        List<SmartAttendance> oldAttendances = smartAttendanceService.queryExistAttendances(TimeExchange.getStartDate(), TimeExchange.getEndDate());
+        if (oldAttendances != null && oldAttendances.size() > 0) {
+            if (attendances != null && attendances.size() > 0) {
+                for (SmartAttendance oldAttendance : oldAttendances) {
+                    attendances = attendances.stream().filter(e -> !e.getXwuid().equals(oldAttendance.getXwuid())).collect(Collectors.toList());
                 }
             }
         }
+
         //新增请假数据
-        SmartAttendance attendance = new SmartAttendance();
+        if (attendances != null && attendances.size() > 0) {
+            //获取用户数据
+            List<String> xwuids = attendances.stream().map(SmartAttendance::getUserUid).collect(Collectors.toList());
+            List<SmartUser> users = smartUserService.getSmartUserByxwuids(xwuids);
+            if(users != null && users.size() > 0){
+                for (SmartAttendance attendance:attendances) {
+                    Optional<SmartUser> user = users.stream().filter(e -> e.getXwStudentUid().equals(attendance.getUserUid())).findFirst();
+                    if(user != null && user.isPresent()){
+                        attendance.setUserId(user.get().getId());
+                        attendance.setClassId(user.get().getSchoolClass());
+                    }
+                }
+            }
 
+            boolean insertResult = smartAttendanceService.insertAttendanceBatch(attendances);
+            if(!insertResult){
+                return CommonResult.fail("请假数据获取失败");
+            }
+        }
 
         return CommonResult.ok("操作成功");
     }

+ 5 - 0
src/main/java/com/template/services/SmartAttendanceService.java

@@ -2,6 +2,7 @@ package com.template.services;
 
 import com.template.model.pojo.SmartAttendance;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.template.model.pojo.SmartVisitor;
 
 import java.util.List;
 
@@ -15,4 +16,8 @@ import java.util.List;
  */
 public interface SmartAttendanceService extends IService<SmartAttendance> {
     List<SmartAttendance> queryAttendances(String startDate,String endDate);
+
+    List<SmartAttendance> queryExistAttendances(String startDate, String endDate);
+
+    boolean insertAttendanceBatch(List<SmartAttendance> attendances);
 }

+ 2 - 0
src/main/java/com/template/services/SmartUserService.java

@@ -68,4 +68,6 @@ public interface SmartUserService extends IService<SmartUser> {
     SmartUser queryUserInfo(String name,String cardNo,String idCard);
 
     SmartUser getSmartById(Integer id);
+
+    List<SmartUser> getSmartUserByxwuids(List<String> xwuids);
 }

+ 19 - 0
src/main/java/com/template/services/impl/SmartAttendanceServiceImpl.java

@@ -2,6 +2,7 @@ package com.template.services.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.template.mapper.SmartAuthorGroupMapper;
+import com.template.model.enumModel.eAttendanceStatu;
 import com.template.model.pojo.SmartAttendance;
 import com.template.mapper.SmartAttendanceMapper;
 import com.template.services.SmartAttendanceService;
@@ -36,4 +37,22 @@ public class SmartAttendanceServiceImpl extends ServiceImpl<SmartAttendanceMappe
         List<SmartAttendance> result = smartAttendanceMapper.selectList(queryWrapper);
         return result;
     }
+
+
+    @Override
+    public List<SmartAttendance> queryExistAttendances(String startDate, String endDate) {
+        QueryWrapper<SmartAttendance> queryWrapper = new QueryWrapper<>();
+        queryWrapper.ge(StringUtils.hasText(startDate), "start_time", startDate);//大于等于
+        queryWrapper.le(StringUtils.hasText(endDate), "start_time", endDate);//小于等于
+        queryWrapper.eq("status", eAttendanceStatu.AskLeave.getValue());//小于等于
+
+        List<SmartAttendance> result = smartAttendanceMapper.selectList(queryWrapper);
+        return result;
+    }
+
+    @Override
+    public boolean insertAttendanceBatch(List<SmartAttendance> attendances) {
+        boolean result = this.saveBatch(attendances);
+        return result;
+    }
 }

+ 9 - 0
src/main/java/com/template/services/impl/SmartUserServiceImpl.java

@@ -154,6 +154,15 @@ public class SmartUserServiceImpl extends ServiceImpl<SmartUserMapper, SmartUser
     }
 
     @Override
+    public List<SmartUser> getSmartUserByxwuids(List<String> xwuids) {
+        QueryWrapper<SmartUser> queryWrapper = new QueryWrapper();
+        queryWrapper.in("xw_student_uid", xwuids);
+        queryWrapper.eq("is_cancel", 0);
+        List<SmartUser> result = smartUserMapper.selectList(queryWrapper);
+        return result;
+    }
+
+    @Override
     public List<AffiliateUserVo> queryAffiliateUserById(Integer id) {
         List<AffiliateUserVo> result = smartUserMapper.queryAffiliateUserById(id);
         return result;