فهرست منبع

导入数据重复性判断

夏文涛 2 سال پیش
والد
کامیت
e55d6d7e89

+ 179 - 224
.idea/workspace.xml

@@ -2,9 +2,14 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="33456f28-da03-4d10-99dd-fd9bd193cf84" name="Default Changelist" comment="">
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/common/utils/TimeExchange.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/common/utils/TimeExchange.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/api/RepairConsumeControllerAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/api/RepairConsumeControllerAPI.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/config/MyBatisPlusConfig.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/config/MyBatisPlusConfig.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairRecordController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairRecordController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairConsumeController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairConsumeController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairClassesSettingsService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairClassesSettingsService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairConsumeService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairConsumeService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairClassesSettingsServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairClassesSettingsServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairConsumeServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairConsumeServiceImpl.java" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/out/" />
     <ignored path="$PROJECT_DIR$/target/" />
@@ -20,15 +25,6 @@
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairPayRecordController.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="108">
-              <caret line="137" column="7" lean-forward="true" selection-start-line="137" selection-start-column="7" selection-end-line="137" selection-end-column="7" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairRecordController.java">
           <provider selected="true" editor-type-id="text-editor">
             <state relative-caret-position="1626">
@@ -43,77 +39,29 @@
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="382">
-              <caret line="279" column="21" lean-forward="true" selection-start-line="279" selection-start-column="21" selection-end-line="279" selection-end-column="21" />
-            </state>
-          </provider>
-        </entry>
-      </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/common/utils/TimeExchange.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="342">
-              <caret line="191" selection-start-line="191" selection-end-line="191" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/api/RepairClassesSettingsControllerAPI.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="575">
-              <caret line="41" column="58" selection-start-line="41" selection-start-column="27" selection-end-line="41" selection-end-column="58" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/common/exception/EmsExceptionHandler.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="86">
-              <caret line="98" selection-start-line="97" selection-start-column="33" selection-end-line="98" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/mapper/RepairRecordMapper.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="354">
-              <caret line="59" column="4" selection-start-line="59" selection-start-column="4" selection-end-line="59" selection-end-column="4" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairRecordServiceImpl.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="226">
-              <caret line="235" selection-start-line="235" selection-end-line="235" />
+            <state relative-caret-position="3310">
+              <caret line="412" column="48" selection-start-line="412" selection-start-column="48" selection-end-line="412" selection-end-column="48" />
             </state>
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/api/RepairRecordControllerAPI.java">
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairConsumeController.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="292">
-              <caret line="118" column="34" selection-start-line="118" selection-start-column="17" selection-end-line="118" selection-end-column="34" />
-              <folding>
-                <element signature="imports" expanded="true" />
-              </folding>
+            <state relative-caret-position="-50">
+              <caret line="258" column="49" lean-forward="true" selection-start-line="258" selection-start-column="49" selection-end-line="258" selection-end-column="49" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/RepairRecordService.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/config/MyBatisPlusConfig.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="633">
-              <caret line="75" selection-start-line="75" selection-end-line="75" />
+            <state relative-caret-position="488">
+              <caret line="43" column="32" selection-start-line="43" selection-start-column="32" selection-end-line="43" selection-end-column="32" />
             </state>
           </provider>
         </entry>
@@ -130,11 +78,6 @@
   </component>
   <component name="FindInProjectRecents">
     <findStrings>
-      <find>transferOrder</find>
-      <find>transferApply</find>
-      <find>= 0</find>
-      <find>header</find>
-      <find>转单申请</find>
       <find>失败</find>
       <find>collaborateApply</find>
       <find>in</find>
@@ -159,7 +102,12 @@
       <find>协作审核</find>
       <find>importRepairClassesSettingExce</find>
       <find>month</find>
+      <find>shifts</find>
+      <find>days</find>
+      <find>downloadRepairClassesSettingExcel</find>
+      <find>importRepairConsumeExcel</find>
       <find>cooperationOrders</find>
+      <find>datas</find>
     </findStrings>
     <replaceStrings>
       <replace>Consume</replace>
@@ -200,13 +148,6 @@
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <option value="$PROJECT_DIR$/src/main/java/com/repair/mapper/RepairConsumablesMapper.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/repair/api/RepairConsumablesControllerAPI.java" />
-        <option value="$PROJECT_DIR$/src/main/resources/mapper/repair/RepairConsumablesMapper.xml" />
-        <option value="$PROJECT_DIR$/src/main/java/com/repair/model/vo/ChangeConsumesVo.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/repair/controller/MaintenanceConsumeablesRequest.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/repair/model/request/insertConsumablesRequest.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/repair/services/RepairConsumablesService.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairConsumablesServiceImpl.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairConsumablesController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/repair/model/vo/TeamWorkCountVo.java" />
@@ -250,7 +191,14 @@
         <option value="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairRecordServiceImpl.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairRecordController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/repair/common/utils/TimeExchange.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/repair/services/RepairClassesSettingsService.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairClassesSettingsServiceImpl.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/repair/services/RepairConsumeService.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairConsumeServiceImpl.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/repair/api/RepairConsumeControllerAPI.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/repair/config/MyBatisPlusConfig.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairConsumeController.java" />
       </list>
     </option>
   </component>
@@ -282,10 +230,11 @@
   <component name="MavenRunner">
     <option name="skipTests" value="true" />
   </component>
-  <component name="ProjectFrameBounds">
-    <option name="x" value="-7" />
-    <option name="width" value="974" />
-    <option name="height" value="1039" />
+  <component name="ProjectFrameBounds" extendedState="7">
+    <option name="x" value="-8" />
+    <option name="y" value="-8" />
+    <option name="width" value="1936" />
+    <option name="height" value="1048" />
   </component>
   <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
   <component name="ProjectView">
@@ -437,6 +386,15 @@
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="repair" type="462c0819:PsiDirectoryNode" />
+              <item name="handler" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="repair_report" type="b2602c69:ProjectViewProjectNode" />
+              <item name="repair_backend" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="repair" type="462c0819:PsiDirectoryNode" />
               <item name="mapper" type="462c0819:PsiDirectoryNode" />
             </path>
             <path>
@@ -696,12 +654,12 @@
       <workItem from="1690506045062" duration="61277000" />
       <workItem from="1690850680543" duration="167784000" />
       <workItem from="1691462847133" duration="36999000" />
-      <workItem from="1691630777837" duration="23951000" />
+      <workItem from="1691630777837" duration="29480000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="653312000" />
+    <option name="totallyTimeSpent" value="658841000" />
   </component>
   <component name="TodoView">
     <todo-panel id="selected-file">
@@ -713,10 +671,10 @@
     </todo-panel>
   </component>
   <component name="ToolWindowManager">
-    <frame x="-7" y="0" width="974" height="1039" extended-state="0" />
+    <frame x="-8" y="-8" width="1936" height="1048" extended-state="7" />
     <editor active="true" />
     <layout>
-      <window_info content_ui="combo" id="Project" order="0" weight="0.29978117" />
+      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.141258" />
       <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
       <window_info id="Designer" order="2" />
       <window_info id="JRebel" order="3" side_tool="true" />
@@ -727,8 +685,8 @@
       <window_info id="Web" order="8" side_tool="true" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" weight="0.32603937" />
-      <window_info anchor="bottom" id="Run" order="2" weight="0.22100656" />
-      <window_info active="true" anchor="bottom" id="Debug" order="3" visible="true" weight="0.15911601" />
+      <window_info anchor="bottom" id="Run" order="2" weight="0.3884026" />
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.14113785" />
       <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" weight="0.32932165" />
@@ -859,15 +817,15 @@
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java</url>
-          <line>248</line>
+          <line>344</line>
           <properties />
-          <option name="timeStamp" value="249" />
+          <option name="timeStamp" value="260" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java</url>
-          <line>378</line>
+          <line>460</line>
           <properties />
-          <option name="timeStamp" value="254" />
+          <option name="timeStamp" value="261" />
         </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>
@@ -877,114 +835,6 @@
     <option name="FILTER_TARGETS" value="false" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/LoginController.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="315">
-          <caret line="125" lean-forward="true" selection-start-line="125" selection-end-line="125" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairPayRecord.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="792">
-          <caret line="58" column="20" selection-start-line="58" selection-start-column="20" selection-end-line="58" selection-end-column="20" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/RepairPayRecordService.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="621">
-          <caret line="31" column="52" selection-start-line="31" selection-start-column="44" selection-end-line="31" selection-end-column="52" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/mapper/RepairPayRecordMapper.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="138">
-          <caret line="9" column="13" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/common/utils/StrUtils.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="80">
-          <caret line="31" column="25" selection-start-line="31" selection-start-column="25" selection-end-line="31" selection-end-column="25" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/request/repairPayRequest.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="204">
-          <caret line="28" column="27" selection-start-line="28" selection-start-column="27" selection-end-line="28" selection-end-column="27" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/api/RepairPayRecordControllerAPI.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="598">
-          <caret line="33" column="67" selection-start-line="33" selection-start-column="67" selection-end-line="33" selection-end-column="67" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/request/finishOrderRequest.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="79">
-          <caret line="16" column="13" selection-start-line="16" selection-start-column="13" selection-end-line="16" selection-end-column="13" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/RepairReceivingService.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="575">
-          <caret line="30" column="47" selection-start-line="30" selection-start-column="47" selection-end-line="30" selection-end-column="47" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairReceivingServiceImpl.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="562">
-          <caret line="69" column="37" selection-start-line="69" selection-start-column="15" selection-end-line="69" selection-end-column="37" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairReceiving.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="341">
-          <caret line="60" column="27" selection-start-line="60" selection-start-column="17" selection-end-line="60" selection-end-column="27" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/repair/RepairPayRecordMapper.xml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="322">
-          <caret line="14" column="83" selection-start-line="14" selection-start-column="75" selection-end-line="14" selection-end-column="83" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/vo/MaintenanceTechnicianVo.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="299">
-          <caret line="13" column="7" selection-start-line="13" selection-start-column="7" selection-end-line="13" selection-end-column="7" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairTransferRecord.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="295">
-          <caret line="61" column="20" selection-start-line="61" selection-start-column="20" selection-end-line="61" selection-end-column="20" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/RepairTransferRecordService.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="299">
-          <caret line="18" column="7" selection-start-line="18" selection-start-column="4" selection-end-line="18" selection-end-column="7" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/request/transferOrderRequest.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="345">
@@ -999,13 +849,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairClassesSettingsServiceImpl.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="246">
-          <caret line="53" column="13" selection-start-line="53" selection-start-column="13" selection-end-line="53" selection-end-column="13" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairArticleTypeServiceImpl.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="686">
@@ -1204,24 +1047,136 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/api/RepairClassesSettingsControllerAPI.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/common/utils/TimeExchange.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="575">
-          <caret line="41" column="58" selection-start-line="41" selection-start-column="27" selection-end-line="41" selection-end-column="58" />
+        <state relative-caret-position="342">
+          <caret line="191" selection-start-line="191" selection-end-line="191" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairClassesSettingsServiceImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="663">
+          <caret line="72" column="56" selection-start-line="72" selection-start-column="39" selection-end-line="72" selection-end-column="56" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairClassesSettings.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="247">
+          <caret line="50" column="22" selection-start-line="50" selection-start-column="22" selection-end-line="50" selection-end-column="22" />
         </state>
       </provider>
     </entry>
     <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.3.22/spring-web-5.3.22-sources.jar!/org/springframework/web/method/support/InvocableHandlerMethod.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="281">
-          <caret line="214" selection-start-line="214" selection-end-line="214" />
+        <state relative-caret-position="212">
+          <caret line="211" selection-start-line="211" selection-end-line="211" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/common/utils/TimeExchange.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairSchoolVo.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="342">
-          <caret line="191" selection-start-line="191" selection-end-line="191" />
+        <state relative-caret-position="368">
+          <caret line="16" column="20" selection-start-line="16" selection-start-column="20" selection-end-line="16" selection-end-column="20" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairConsume.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="251">
+          <caret line="42" column="20" selection-start-line="42" selection-start-column="20" selection-end-line="42" selection-end-column="20" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/api/RepairClassesSettingsControllerAPI.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="483">
+          <caret line="43" column="71" selection-start-line="43" selection-start-column="49" selection-end-line="43" selection-end-column="71" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/api/RepairConsumeControllerAPI.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="557">
+          <caret line="52" column="41" selection-start-line="52" selection-start-column="17" selection-end-line="52" selection-end-column="41" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairConsumeServiceImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="249">
+          <caret line="73" column="5" lean-forward="true" selection-start-line="73" selection-start-column="5" selection-end-line="73" selection-end-column="5" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/RepairConsumeService.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="647">
+          <caret line="39" column="38" selection-start-line="39" selection-start-column="38" selection-end-line="39" selection-end-column="38" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairPayRecordController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="108">
+          <caret line="137" column="7" lean-forward="true" selection-start-line="137" selection-start-column="7" selection-end-line="137" selection-end-column="7" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/handle/NonStaticResourceHttpRequestHandler.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="253">
+          <caret line="17" column="13" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/handler/MyMetaObjectHandler.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-50">
+          <caret line="16" column="13" selection-start-line="16" selection-start-column="13" selection-end-line="16" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/core/SwaggerConfiguration.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="253">
+          <caret line="22" column="13" selection-start-line="22" selection-start-column="13" selection-end-line="22" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/core/CORSConfiguration.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="115">
+          <caret line="8" column="13" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/core/JwtAuthenticationInterceptor.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-1416">
+          <caret line="20" column="13" selection-start-line="20" selection-start-column="13" selection-end-line="20" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/core/JwtlnterceptorConfig.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="115">
+          <caret line="9" column="13" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/config/MyBatisPlusConfig.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="488">
+          <caret line="43" column="32" selection-start-line="43" selection-start-column="32" selection-end-line="43" selection-end-column="32" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/RepairClassesSettingsService.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="548">
+          <caret line="31" column="32" selection-start-line="31" selection-start-column="32" selection-end-line="31" selection-end-column="32" />
         </state>
       </provider>
     </entry>
@@ -1238,17 +1193,17 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairPayRecordController.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="108">
-          <caret line="137" column="7" lean-forward="true" selection-start-line="137" selection-start-column="7" selection-end-line="137" selection-end-column="7" />
+        <state relative-caret-position="3310">
+          <caret line="412" column="48" selection-start-line="412" selection-start-column="48" selection-end-line="412" selection-end-column="48" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairConsumeController.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="382">
-          <caret line="279" column="21" lean-forward="true" selection-start-line="279" selection-start-column="21" selection-end-line="279" selection-end-column="21" />
+        <state relative-caret-position="-50">
+          <caret line="258" column="49" lean-forward="true" selection-start-line="258" selection-start-column="49" selection-end-line="258" selection-end-column="49" />
         </state>
       </provider>
     </entry>

+ 1 - 1
src/main/java/com/repair/api/RepairConsumeControllerAPI.java

@@ -50,6 +50,6 @@ public interface RepairConsumeControllerAPI {
 
     @PostMapping(value = "/importRepairConsumeExcel")
     @ApiOperation(value = "导入耗材数据", notes = "导入耗材数据", httpMethod = "POST")
-    CommonResult importRepairConsumeExcel(MultipartFile file) throws IOException;
+    CommonResult importRepairConsumeExcel(@RequestParam("file") MultipartFile file) throws IOException;
 
 }

+ 1 - 1
src/main/java/com/repair/config/MyBatisPlusConfig.java

@@ -41,7 +41,7 @@ public class MyBatisPlusConfig {
      * 在控制台显示sql语句
      */
     @Bean
-    @Profile({"dev","test"})// 设置 dev test 环境开启,保证我们的效率
+    @Profile({"dev","test","prod"})// 设置 dev test 环境开启,保证我们的效率
     public PerformanceInterceptor performanceInterceptor() {
         PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
         performanceInterceptor.setMaxTime(3000); //ms 设置sql执行的最大时间,如果超过了则不执行

+ 79 - 46
src/main/java/com/repair/controller/RepairClassesSettingsController.java

@@ -74,11 +74,11 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
 
         //防止选择的班次重叠
         List<RepairShiftSettings> datas = repairShiftSettingsService.getRepairsByShiftIds(ircr.getShiftIds());
-        for (int i = 0;i<datas.size();i++){
-            for (int j = i+1;j<datas.size();j++){
-                boolean isOver = TimeExchange.overlapping(datas.get(i).getStartTime(),datas.get(i).getEndTime(),datas.get(j).getStartTime(),datas.get(j).getEndTime());
-                if(isOver){
-                    return CommonResult.fail(datas.get(i).getStartTime()+"-"+datas.get(i).getEndTime()+"时间段和"+datas.get(j).getStartTime()+"-"+datas.get(j).getEndTime()+"时间段存在重叠");
+        for (int i = 0; i < datas.size(); i++) {
+            for (int j = i + 1; j < datas.size(); j++) {
+                boolean isOver = TimeExchange.overlapping(datas.get(i).getStartTime(), datas.get(i).getEndTime(), datas.get(j).getStartTime(), datas.get(j).getEndTime());
+                if (isOver) {
+                    return CommonResult.fail(datas.get(i).getStartTime() + "-" + datas.get(i).getEndTime() + "时间段和" + datas.get(j).getStartTime() + "-" + datas.get(j).getEndTime() + "时间段存在重叠");
                 }
             }
         }
@@ -107,11 +107,11 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
 
         //防止选择的班次重叠
         List<RepairShiftSettings> datas = repairShiftSettingsService.getRepairsByShiftIds(urcr.getShiftIds());
-        for (int i = 0;i<datas.size();i++){
-            for (int j = i+1;j<datas.size();j++){
-                boolean isOver = TimeExchange.overlapping(datas.get(i).getStartTime(),datas.get(i).getEndTime(),datas.get(j).getStartTime(),datas.get(j).getEndTime());
-                if(isOver){
-                    return CommonResult.fail(datas.get(i).getStartTime()+"-"+datas.get(i).getEndTime()+"时间段和"+datas.get(j).getStartTime()+"-"+datas.get(j).getEndTime()+"时间段存在重叠");
+        for (int i = 0; i < datas.size(); i++) {
+            for (int j = i + 1; j < datas.size(); j++) {
+                boolean isOver = TimeExchange.overlapping(datas.get(i).getStartTime(), datas.get(i).getEndTime(), datas.get(j).getStartTime(), datas.get(j).getEndTime());
+                if (isOver) {
+                    return CommonResult.fail(datas.get(i).getStartTime() + "-" + datas.get(i).getEndTime() + "时间段和" + datas.get(j).getStartTime() + "-" + datas.get(j).getEndTime() + "时间段存在重叠");
                 }
             }
         }
@@ -151,7 +151,7 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
 
         List<ClassesSettingVo> datas = repairClassesSettingsService.getRepairByUserIds(userIds, startTime, endTime);
         List<ClassesSettingPageDataVo> cspds = new ArrayList<>();
-        for (RepairUser ru:result.getList()) {
+        for (RepairUser ru : result.getList()) {
             ClassesSettingPageDataVo cspd = new ClassesSettingPageDataVo();
             cspd.setSchoolId(ru.getSchoolId());
             cspd.setSchoolName(eSchool.stringOf(ru.getSchoolId()));
@@ -159,7 +159,7 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
             cspd.setUserName(ru.getUserName());
             List<ClassesSettingVo> classDatas = datas.stream().filter(e -> e.getUserId() == ru.getId()).collect(Collectors.toList());
 
-            for (ClassSettingDateVo d:dates) {
+            for (ClassSettingDateVo d : dates) {
                 Optional<ClassesSettingVo> o = classDatas.stream().filter(e -> e.getStartDate().equals(d.getDateStr())).findFirst();
                 if (!(o != null && o.isPresent())) {
                     ClassesSettingVo newData = new ClassesSettingVo();
@@ -204,18 +204,18 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
         }
 
         List<ClassesSettingVo> datas = repairClassesSettingsService.getRepairByUserIds(userIds, startTime, endTime);
-        List<Map<String,Object>> list = new ArrayList<>();
-        for (RepairUser ru:result) {
-            Map<String,Object> map = new LinkedHashMap<>();
-            map.put("名称",ru.getUserName());
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (RepairUser ru : result) {
+            Map<String, Object> map = new LinkedHashMap<>();
+            map.put("名称", ru.getUserName());
             List<ClassesSettingVo> classDatas = datas.stream().filter(e -> e.getUserId() == ru.getId()).collect(Collectors.toList());
 
-            for (ClassSettingDateVo d:dates) {
+            for (ClassSettingDateVo d : dates) {
                 Optional<ClassesSettingVo> o = classDatas.stream().filter(e -> e.getStartDate().equals(d.getDateStr())).findFirst();
                 if (!(o != null && o.isPresent())) {
-                    map.put(d.getDateStr()+"("+d.getWeekStr()+")","");
-                }else{
-                    map.put(d.getDateStr()+"("+d.getWeekStr()+")",o.get().getShiftName());
+                    map.put(d.getDateStr() + "(" + d.getWeekStr() + ")", "");
+                } else {
+                    map.put(d.getDateStr() + "(" + d.getWeekStr() + ")", o.get().getShiftName());
                 }
             }
 
@@ -226,7 +226,6 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
     }
 
 
-
     @Override
     public CommonResult deleteRepairClassesSettingsById(int id) {
         RepairClassesSettings data = repairClassesSettingsService.getRepairById(id);
@@ -246,6 +245,9 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
 
     @Override
     public CommonResult importRepairClassesSettingExcel(MultipartFile file) throws IOException, ParseException {
+        if (file.isEmpty() || file.getSize() == 0) {
+            return CommonResult.fail("导入文件不能为空");
+        }
         String ContentType = file.getContentType();
         InputStream inputStream = file.getInputStream();
         List<RepairClassesSettings> result = new ArrayList<>();
@@ -279,6 +281,7 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
     private CommonResult<List<RepairClassesSettings>> readXls(InputStream inputStream) throws IOException, ParseException {
         int days = 0;
         int month = 0;
+        int year = 0;
         List<String> datas = new ArrayList<>();
         HSSFWorkbook sheets = new HSSFWorkbook(inputStream);
         List<RepairClassesSettings> result = new ArrayList<>();
@@ -289,8 +292,9 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
         List<Integer> userZZs = new ArrayList<>();
         userZZs.add(1);
         userZZs.add(2);
-        List<RepairUser> users = repairUserService.getRepairByUserZZ(userZZs,null);
+        List<RepairUser> users = repairUserService.getRepairByUserZZ(userZZs, null);
         List<RepairShiftSettings> shifts = repairShiftSettingsService.getRepairs();
+        List<RepairClassesSettings> clssses = new ArrayList<>();
         //rowNum = 3 从第三行开始获取值
         //sheetAt.getLastRowNum():从0开始统计数量 所以得+1
         for (int rowNum = 0; rowNum < sheetAt.getLastRowNum() + 1; rowNum++) {
@@ -304,18 +308,23 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
                 //然后poi会根据字符串读取它
                 //第一行数据获取月份
                 if (rowNum == 0) {
-                    row.getCell(0).setCellType(CellType.STRING);
-                    month = Integer.valueOf(row.getCell(0).getStringCellValue().substring(4, 6));
+                    try {
+                        row.getCell(0).setCellType(CellType.STRING);
+                        month = Integer.valueOf(row.getCell(0).getStringCellValue().substring(4, 6));
+                        year = Integer.valueOf(row.getCell(0).getStringCellValue().substring(0, 4));
+                    } catch (Exception e) {
+                        return CommonResult.fail("请按模板格式导入数据");
+                    }
+                    clssses = repairClassesSettingsService.getRepairByMonths(year + "-" + String.format("%02d", month));
                 } else if (rowNum == 3) {//日期
 
                     days = TimeExchange.getMonthDays(TimeExchange.getDate(), month);
-                    for (int d = 1; d <= days; d++) {
+                    for (int d = 1; d <= row.getPhysicalNumberOfCells() - 1; d++) {
                         row.getCell(d).setCellType(CellType.STRING);
-                        String stringCellValue = TimeExchange.getDateMonth() + String.format("%02d", Integer.valueOf(row.getCell(d).getStringCellValue()));
+                        String stringCellValue = year + "-" + String.format("%02d", month) + "-" + String.format("%02d", Integer.valueOf(row.getCell(d).getStringCellValue()));
                         datas.add(stringCellValue);
                     }
                 } else if (rowNum >= 4) {
-
                     row.getCell(0).setCellType(CellType.STRING);
                     String UserName = row.getCell(0).getStringCellValue();
                     int userId = 0;
@@ -331,7 +340,16 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
                         return CommonResult.fail("导入的Excel中" + UserName + "存在重复数据");
                     }
 
-                    for (int d = 1; d <= days; d++) {
+                    for (int d = 1; d <= datas.size(); d++) {
+                        Integer userid = userId;
+                        String dateStr = datas.get(d - 1);
+                        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                        //重复数据不让导入
+                        long exist = clssses.stream().filter(e -> e.getUserId().equals(userid) && e.getStartDate().format(formatter).equals(dateStr)).count();
+                        if (exist > 0) {
+                            return CommonResult.fail(UserName + "的" + dateStr + "日数据在系统中已存在,请勿重复导入");
+                        }
+
                         //用户ID
                         RepairClassesSettings classData = new RepairClassesSettings();
                         classData.setUserId(userId);
@@ -357,11 +375,11 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
                             }
                         }
 
-                        for (int i = 0;i<shiftDatas.size();i++){
-                            for (int j = i+1;j<shiftDatas.size();j++){
-                                boolean isOver = TimeExchange.overlapping(shiftDatas.get(i).getStartTime(),shiftDatas.get(i).getEndTime(),shiftDatas.get(j).getStartTime(),shiftDatas.get(j).getEndTime());
-                                if(isOver){
-                                    return CommonResult.fail(UserName +"师傅的"+datas.get(d - 1)+"日"+shiftDatas.get(i).getStartTime()+"-"+shiftDatas.get(i).getEndTime()+"时间段和"+shiftDatas.get(j).getStartTime()+"-"+shiftDatas.get(j).getEndTime()+"时间段存在重叠");
+                        for (int i = 0; i < shiftDatas.size(); i++) {
+                            for (int j = i + 1; j < shiftDatas.size(); j++) {
+                                boolean isOver = TimeExchange.overlapping(shiftDatas.get(i).getStartTime(), shiftDatas.get(i).getEndTime(), shiftDatas.get(j).getStartTime(), shiftDatas.get(j).getEndTime());
+                                if (isOver) {
+                                    return CommonResult.fail(UserName + "师傅的" + datas.get(d - 1) + "日" + shiftDatas.get(i).getStartTime() + "-" + shiftDatas.get(i).getEndTime() + "时间段和" + shiftDatas.get(j).getStartTime() + "-" + shiftDatas.get(j).getEndTime() + "时间段存在重叠");
                                 }
                             }
                         }
@@ -388,8 +406,9 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
         List<Integer> userZZs = new ArrayList<>();
         userZZs.add(1);
         userZZs.add(2);
-        List<RepairUser> users = repairUserService.getRepairByUserZZ(userZZs,null);
+        List<RepairUser> users = repairUserService.getRepairByUserZZ(userZZs, null);
         List<RepairShiftSettings> shifts = repairShiftSettingsService.getRepairs();
+        List<RepairClassesSettings> clssses = new ArrayList<>();
         //rowNum = 3 从第三行开始获取值
         //sheetAt.getLastRowNum():从0开始统计数量 所以得+1
         for (int rowNum = 0; rowNum < sheetAt.getLastRowNum() + 1; rowNum++) {
@@ -403,19 +422,24 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
                 //然后poi会根据字符串读取它
                 //第一行数据获取月份
                 if (rowNum == 0) {
-                    row.getCell(0).setCellType(CellType.STRING);
-                    month = Integer.valueOf(row.getCell(0).getStringCellValue().substring(4, 6));
-                    year =Integer.valueOf(row.getCell(0).getStringCellValue().substring(0, 4));
+                    try {
+                        row.getCell(0).setCellType(CellType.STRING);
+                        month = Integer.valueOf(row.getCell(0).getStringCellValue().substring(4, 6));
+                        year = Integer.valueOf(row.getCell(0).getStringCellValue().substring(0, 4));
+                    } catch (Exception e) {
+                        return CommonResult.fail("请按模板格式导入数据");
+                    }
+                    clssses = repairClassesSettingsService.getRepairByMonths(year + "-" + String.format("%02d", month));
+
                 } else if (rowNum == 3) {//日期
 
                     days = TimeExchange.getMonthDays(TimeExchange.getDate(), month);
-                    for (int d = 1; d <= days; d++) {
+                    for (int d = 1; d <= row.getPhysicalNumberOfCells() - 1; d++) {
                         row.getCell(d).setCellType(CellType.STRING);
-                        String stringCellValue = year + "-" +  String.format("%02d",month)+ "-" + String.format("%02d", Integer.valueOf(row.getCell(d).getStringCellValue()));
+                        String stringCellValue = year + "-" + String.format("%02d", month) + "-" + String.format("%02d", Integer.valueOf(row.getCell(d).getStringCellValue()));
                         datas.add(stringCellValue);
                     }
                 } else if (rowNum >= 4) {
-
                     row.getCell(0).setCellType(CellType.STRING);
                     String UserName = row.getCell(0).getStringCellValue();
                     int userId = 0;
@@ -431,7 +455,16 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
                         return CommonResult.fail("导入的Excel中" + UserName + "存在重复数据");
                     }
 
-                    for (int d = 1; d <= days; d++) {
+                    for (int d = 1; d <= datas.size(); d++) {
+                        Integer userid = userId;
+                        String dateStr = datas.get(d - 1);
+                        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                        //重复数据不让导入
+                        long exist = clssses.stream().filter(e -> e.getUserId().equals(userid) && e.getStartDate().format(formatter).equals(dateStr)).count();
+                        if (exist > 0) {
+                            return CommonResult.fail(UserName + "的" + dateStr + "日数据在系统中已存在,请勿重复导入");
+                        }
+
                         //用户ID
                         RepairClassesSettings classData = new RepairClassesSettings();
                         classData.setUserId(userId);
@@ -457,11 +490,11 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
                             }
                         }
 
-                        for (int i = 0;i<shiftDatas.size();i++){
-                            for (int j = i+1;j<shiftDatas.size();j++){
-                                boolean isOver = TimeExchange.overlapping(shiftDatas.get(i).getStartTime(),shiftDatas.get(i).getEndTime(),shiftDatas.get(j).getStartTime(),shiftDatas.get(j).getEndTime());
-                                if(isOver){
-                                    return CommonResult.fail(UserName +"师傅的"+datas.get(d - 1)+"日"+shiftDatas.get(i).getStartTime()+"-"+shiftDatas.get(i).getEndTime()+"时间段和"+shiftDatas.get(j).getStartTime()+"-"+shiftDatas.get(j).getEndTime()+"时间段存在重叠");
+                        for (int i = 0; i < shiftDatas.size(); i++) {
+                            for (int j = i + 1; j < shiftDatas.size(); j++) {
+                                boolean isOver = TimeExchange.overlapping(shiftDatas.get(i).getStartTime(), shiftDatas.get(i).getEndTime(), shiftDatas.get(j).getStartTime(), shiftDatas.get(j).getEndTime());
+                                if (isOver) {
+                                    return CommonResult.fail(UserName + "师傅的" + datas.get(d - 1) + "日" + shiftDatas.get(i).getStartTime() + "-" + shiftDatas.get(i).getEndTime() + "时间段和" + shiftDatas.get(j).getStartTime() + "-" + shiftDatas.get(j).getEndTime() + "时间段存在重叠");
                                 }
                             }
                         }

+ 153 - 122
src/main/java/com/repair/controller/RepairConsumeController.java

@@ -219,6 +219,9 @@ public class RepairConsumeController implements RepairConsumeControllerAPI {
 
     @Override
     public CommonResult importRepairConsumeExcel(MultipartFile file) throws IOException {
+        if (file.isEmpty() || file.getSize() == 0) {
+            return CommonResult.fail("导入文件不能为空");
+        }
         String ContentType = file.getContentType();
         InputStream inputStream = file.getInputStream();
         List<RepairConsume> result = new ArrayList<>();
@@ -259,77 +262,91 @@ public class RepairConsumeController implements RepairConsumeControllerAPI {
         List<RepairSchoolVo> schools = repairAreaService.queryRepairSchools();
         //报修物品
         List<RepairArticleType> articles = repairArticleTypeService.getRepairArticleTypes();
+        //耗材数据
+        List<RepairConsume> consumes = repairConsumeService.getConsumes();
 
         DataFormatter dataFormatter = new DataFormatter();
-        //sheetAt.getLastRowNum():从0开始统计数量 所以得+1
-        for (int rowNum = 1; rowNum < sheetAt.getLastRowNum() + 1; rowNum++) {
 
-            HSSFRow row = sheetAt.getRow(rowNum);
+        try {
+            //sheetAt.getLastRowNum():从0开始统计数量 所以得+1
+            for (int rowNum = 1; rowNum < sheetAt.getLastRowNum() + 1; rowNum++) {
 
-            if (rowNum == 1) {
-                String name = dataFormatter.formatCellValue(row.getCell(0));//耗材名称
-                if (!name.equals("名称")) {
-                    return CommonResult.fail("导入数据第一列为名称");
-                }
-                String schoolName = dataFormatter.formatCellValue(row.getCell(1));//校区名称
-                if (!schoolName.equals("校区")) {
-                    return CommonResult.fail("导入数据第二列为校区");
-                }
-                String ArticleName = dataFormatter.formatCellValue(row.getCell(2));//报修物品类别
-                if (!ArticleName.equals("类别")) {
-                    return CommonResult.fail("导入数据第三列为类别");
-                }
-                String price = dataFormatter.formatCellValue(row.getCell(3));//耗材单价
-                if (!price.equals("价格(元)")) {
-                    return CommonResult.fail("导入数据第四列为价格");
-                }
+                HSSFRow row = sheetAt.getRow(rowNum);
+
+                if (rowNum == 1) {
+                    String name = dataFormatter.formatCellValue(row.getCell(0));//耗材名称
+                    if (!name.equals("名称")) {
+                        return CommonResult.fail("导入数据第一列为名称");
+                    }
+                    String schoolName = dataFormatter.formatCellValue(row.getCell(1));//校区名称
+                    if (!schoolName.equals("校区")) {
+                        return CommonResult.fail("导入数据第二列为校区");
+                    }
+                    String ArticleName = dataFormatter.formatCellValue(row.getCell(2));//报修物品类别
+                    if (!ArticleName.equals("类别")) {
+                        return CommonResult.fail("导入数据第三列为类别");
+                    }
+                    String price = dataFormatter.formatCellValue(row.getCell(3));//耗材单价
+                    if (!price.equals("价格(元)")) {
+                        return CommonResult.fail("导入数据第四列为价格");
+                    }
 
-            } else {
-                RepairConsume data = new RepairConsume();
-                //耗材名称
-                String name = dataFormatter.formatCellValue(row.getCell(0));
-                ConsumeNames.add(name);
-                if (ConsumeNames.stream().distinct().count() != ConsumeNames.size()) {
-                    return CommonResult.fail("导入的Excel中" + name + "存在重复数据");
-                }
-                data.setName(name);
-                //校区
-                String schoolName = dataFormatter.formatCellValue(row.getCell(1));
-                Optional<RepairSchoolVo> school = schools.stream().filter(e -> e.getName().equals(schoolName)).findFirst();
-                if (school != null && school.isPresent()) {
-                    data.setSchoolId(school.get().getId());
-                } else {
-                    return CommonResult.fail(name + "的" + schoolName + "校区数据在数据库中不存在");
-                }
-                //报修物品(类别)
-                String article = dataFormatter.formatCellValue(row.getCell(2));
-                String[] articleStrs = null;
-                if (article.contains("、")) {
-                    articleStrs = article.split("、");
-                } else if (article.contains(",")) {
-                    articleStrs = article.split(",");
                 } else {
-                    articleStrs = new String[1];
-                    articleStrs[0] = article;
-                }
-                List<String> ass = new ArrayList<>();
-                for (String as : articleStrs) {
-                    if (!as.equals("")) {
-                        Optional<RepairArticleType> shiftData = articles.stream().filter(e -> e.getName().equals(as)).findFirst();
-                        if (shiftData != null && shiftData.isPresent()) {
-                            ass.add(shiftData.get().getId().toString());
-                        } else {
-                            return CommonResult.fail(name + "的" + as + "数据不存在");
+                    RepairConsume data = new RepairConsume();
+                    //耗材名称
+                    String name = dataFormatter.formatCellValue(row.getCell(0));
+                    ConsumeNames.add(name);
+                    if (ConsumeNames.stream().distinct().count() != ConsumeNames.size()) {
+                        return CommonResult.fail("导入的Excel中" + name + "存在重复数据");
+                    }
+                    data.setName(name);
+                    //校区
+                    String schoolName = dataFormatter.formatCellValue(row.getCell(1));
+                    Optional<RepairSchoolVo> school = schools.stream().filter(e -> e.getName().equals(schoolName)).findFirst();
+                    if (school != null && school.isPresent()) {
+                        data.setSchoolId(school.get().getId());
+                    } else {
+                        return CommonResult.fail(name + "的" + schoolName + "校区数据在数据库中不存在");
+                    }
+
+                    //重复数据提示
+                    long exist = consumes.stream().filter(e -> e.getSchoolId().equals(school.get().getId()) && e.getName().equals(name)).count();
+                    if (exist > 0) {
+                        return CommonResult.fail(schoolName + "的" + name + "耗材数据在系统中已存在,请勿重复导入");
+                    }
+
+                    //报修物品(类别)
+                    String article = dataFormatter.formatCellValue(row.getCell(2));
+                    String[] articleStrs = null;
+                    if (article.contains("、")) {
+                        articleStrs = article.split("、");
+                    } else if (article.contains(",")) {
+                        articleStrs = article.split(",");
+                    } else {
+                        articleStrs = new String[1];
+                        articleStrs[0] = article;
+                    }
+                    List<String> ass = new ArrayList<>();
+                    for (String as : articleStrs) {
+                        if (!as.equals("")) {
+                            Optional<RepairArticleType> shiftData = articles.stream().filter(e -> e.getName().equals(as)).findFirst();
+                            if (shiftData != null && shiftData.isPresent()) {
+                                ass.add(shiftData.get().getId().toString());
+                            } else {
+                                return CommonResult.fail(name + "的" + as + "数据不存在");
+                            }
                         }
+                        data.setArticleId(StringUtils.join(ass, ','));
+                        result.add(data);
                     }
-                    data.setArticleId(StringUtils.join(ass, ','));
-                    result.add(data);
-                }
 
-                //价格
-                BigDecimal price = new BigDecimal(String.valueOf(row.getCell(3))).stripTrailingZeros();
-                data.setPrice(price);
+                    //价格
+                    BigDecimal price = new BigDecimal(String.valueOf(row.getCell(3))).stripTrailingZeros();
+                    data.setPrice(price);
+                }
             }
+        } catch (Exception e) {
+            return CommonResult.fail("请按模板格式导入数据");
         }
 
         return CommonResult.ok(result);
@@ -346,77 +363,91 @@ public class RepairConsumeController implements RepairConsumeControllerAPI {
         List<RepairSchoolVo> schools = repairAreaService.queryRepairSchools();
         //报修物品
         List<RepairArticleType> articles = repairArticleTypeService.getRepairArticleTypes();
+        //耗材数据
+        List<RepairConsume> consumes = repairConsumeService.getConsumes();
 
         DataFormatter dataFormatter = new DataFormatter();
-        //sheetAt.getLastRowNum():从0开始统计数量 所以得+1
-        for (int rowNum = 1; rowNum < sheetAt.getLastRowNum() + 1; rowNum++) {
 
-            XSSFRow row = sheetAt.getRow(rowNum);
+        try {
+            //sheetAt.getLastRowNum():从0开始统计数量 所以得+1
+            for (int rowNum = 1; rowNum < sheetAt.getLastRowNum() + 1; rowNum++) {
 
-            if (rowNum == 1) {
-                String name = dataFormatter.formatCellValue(row.getCell(0));//耗材名称
-                if (!name.equals("名称")) {
-                    return CommonResult.fail("导入数据第一列为名称");
-                }
-                String schoolName = dataFormatter.formatCellValue(row.getCell(1));//校区名称
-                if (!schoolName.equals("校区")) {
-                    return CommonResult.fail("导入数据第二列为校区");
-                }
-                String ArticleName = dataFormatter.formatCellValue(row.getCell(2));//报修物品类别
-                if (!ArticleName.equals("类别")) {
-                    return CommonResult.fail("导入数据第三列为类别");
-                }
-                String price = dataFormatter.formatCellValue(row.getCell(3));//耗材单价
-                if (!price.equals("价格(元)")) {
-                    return CommonResult.fail("导入数据第四列为价格");
-                }
+                XSSFRow row = sheetAt.getRow(rowNum);
+
+                if (rowNum == 1) {
+                    String name = dataFormatter.formatCellValue(row.getCell(0));//耗材名称
+                    if (!name.equals("名称")) {
+                        return CommonResult.fail("导入数据第一列为名称");
+                    }
+                    String schoolName = dataFormatter.formatCellValue(row.getCell(1));//校区名称
+                    if (!schoolName.equals("校区")) {
+                        return CommonResult.fail("导入数据第二列为校区");
+                    }
+                    String ArticleName = dataFormatter.formatCellValue(row.getCell(2));//报修物品类别
+                    if (!ArticleName.equals("类别")) {
+                        return CommonResult.fail("导入数据第三列为类别");
+                    }
+                    String price = dataFormatter.formatCellValue(row.getCell(3));//耗材单价
+                    if (!price.equals("价格(元)")) {
+                        return CommonResult.fail("导入数据第四列为价格");
+                    }
 
-            } else {
-                RepairConsume data = new RepairConsume();
-                //耗材名称
-                String name = dataFormatter.formatCellValue(row.getCell(0));
-                ConsumeNames.add(name);
-                if (ConsumeNames.stream().distinct().count() != ConsumeNames.size()) {
-                    return CommonResult.fail("导入的Excel中" + name + "存在重复数据");
-                }
-                data.setName(name);
-                //校区
-                String schoolName = dataFormatter.formatCellValue(row.getCell(1));
-                Optional<RepairSchoolVo> school = schools.stream().filter(e -> e.getName().equals(schoolName)).findFirst();
-                if (school != null && school.isPresent()) {
-                    data.setSchoolId(school.get().getId());
-                } else {
-                    return CommonResult.fail(name + "的" + schoolName + "校区数据在数据库中不存在");
-                }
-                //报修物品(类别)
-                String article = dataFormatter.formatCellValue(row.getCell(2));
-                String[] articleStrs = null;
-                if (article.contains("、")) {
-                    articleStrs = article.split("、");
-                } else if (article.contains(",")) {
-                    articleStrs = article.split(",");
                 } else {
-                    articleStrs = new String[1];
-                    articleStrs[0] = article;
-                }
-                List<String> ass = new ArrayList<>();
-                for (String as : articleStrs) {
-                    if (!as.equals("")) {
-                        Optional<RepairArticleType> shiftData = articles.stream().filter(e -> e.getName().equals(as)).findFirst();
-                        if (shiftData != null && shiftData.isPresent()) {
-                            ass.add(shiftData.get().getId().toString());
-                        } else {
-                            return CommonResult.fail(name + "的" + as + "数据不存在");
+                    RepairConsume data = new RepairConsume();
+                    //耗材名称
+                    String name = dataFormatter.formatCellValue(row.getCell(0));
+                    ConsumeNames.add(name);
+                    if (ConsumeNames.stream().distinct().count() != ConsumeNames.size()) {
+                        return CommonResult.fail("导入的Excel中" + name + "存在重复数据");
+                    }
+                    data.setName(name);
+                    //校区
+                    String schoolName = dataFormatter.formatCellValue(row.getCell(1));
+                    Optional<RepairSchoolVo> school = schools.stream().filter(e -> e.getName().equals(schoolName)).findFirst();
+                    if (school != null && school.isPresent()) {
+                        data.setSchoolId(school.get().getId());
+                    } else {
+                        return CommonResult.fail(name + "的" + schoolName + "校区数据在数据库中不存在");
+                    }
+
+                    //重复数据提示
+                    long exist = consumes.stream().filter(e -> e.getSchoolId().equals(school.get().getId()) && e.getName().equals(name)).count();
+                    if (exist > 0) {
+                        return CommonResult.fail(schoolName + "的" + name + "耗材数据在系统中已存在,请勿重复导入");
+                    }
+
+                    //报修物品(类别)
+                    String article = dataFormatter.formatCellValue(row.getCell(2));
+                    String[] articleStrs = null;
+                    if (article.contains("、")) {
+                        articleStrs = article.split("、");
+                    } else if (article.contains(",")) {
+                        articleStrs = article.split(",");
+                    } else {
+                        articleStrs = new String[1];
+                        articleStrs[0] = article;
+                    }
+                    List<String> ass = new ArrayList<>();
+                    for (String as : articleStrs) {
+                        if (!as.equals("")) {
+                            Optional<RepairArticleType> shiftData = articles.stream().filter(e -> e.getName().equals(as)).findFirst();
+                            if (shiftData != null && shiftData.isPresent()) {
+                                ass.add(shiftData.get().getId().toString());
+                            } else {
+                                return CommonResult.fail(name + "的" + as + "数据不存在");
+                            }
                         }
+                        data.setArticleId(StringUtils.join(ass, ','));
+                        result.add(data);
                     }
-                    data.setArticleId(StringUtils.join(ass, ','));
-                    result.add(data);
-                }
 
-                //价格
-                BigDecimal price = new BigDecimal(dataFormatter.formatCellValue(row.getCell(3)));
-                data.setPrice(price);
+                    //价格
+                    BigDecimal price = new BigDecimal(dataFormatter.formatCellValue(row.getCell(3)));
+                    data.setPrice(price);
+                }
             }
+        } catch (Exception e) {
+            return CommonResult.fail("请按模板格式导入数据");
         }
 
         return CommonResult.ok(result);

+ 2 - 0
src/main/java/com/repair/services/RepairClassesSettingsService.java

@@ -28,4 +28,6 @@ public interface RepairClassesSettingsService extends IService<RepairClassesSett
     RepairClassesSettings getRepairById(int id);
 
     List<ClassesSettingVo> getRepairByUserIds(List<Integer> userIds, String startTime, String endTime);
+
+    List<RepairClassesSettings> getRepairByMonths(String monthDate);
 }

+ 2 - 0
src/main/java/com/repair/services/RepairConsumeService.java

@@ -36,4 +36,6 @@ public interface RepairConsumeService extends IService<RepairConsume> {
     List<RepairArticleConsumeVo> queryArticleConsumes(Integer schoolId, String keyWork, String findInSet);
 
     List<RepairArticleConsumeVo> queryArticleConsumesName(String findInSet,int schoolId);
+
+    List<RepairConsume> getConsumes();
 }

+ 9 - 1
src/main/java/com/repair/services/impl/RepairClassesSettingsServiceImpl.java

@@ -65,7 +65,15 @@ public class RepairClassesSettingsServiceImpl extends ServiceImpl<RepairClassesS
 
     @Override
     public List<ClassesSettingVo> getRepairByUserIds(List<Integer> userIds, String startTime, String endTime) {
-        List<ClassesSettingVo> result = repairClassesSettingsMapper.queryClassesSettingList(userIds,startTime,endTime);
+        List<ClassesSettingVo> result = repairClassesSettingsMapper.queryClassesSettingList(userIds, startTime, endTime);
+        return result;
+    }
+
+    @Override
+    public List<RepairClassesSettings> getRepairByMonths(String monthDate) {
+        QueryWrapper<RepairClassesSettings> queryWrapper = new QueryWrapper<>();
+        queryWrapper.like("start_date", monthDate);
+        List<RepairClassesSettings> result = repairClassesSettingsMapper.selectList(queryWrapper);
         return result;
     }
 }

+ 6 - 0
src/main/java/com/repair/services/impl/RepairConsumeServiceImpl.java

@@ -93,4 +93,10 @@ public class RepairConsumeServiceImpl extends ServiceImpl<RepairConsumeMapper, R
         List<RepairArticleConsumeVo> result= repairConsumeMapper.queryArticleConsumesName(sss,schoolId);
         return result;
     }
+
+    @Override
+    public List<RepairConsume> getConsumes() {
+        List<RepairConsume> consumes = repairConsumeMapper.selectList(null);
+        return consumes;
+    }
 }