Преглед на файлове

Merge remote-tracking branch 'origin/master'

Reiskuchen преди 5 години
родител
ревизия
f76c7f21ee

+ 1 - 1
fhKeeper/.idea/misc.xml

@@ -10,5 +10,5 @@
       </list>
     </option>
   </component>
-  <component name="ProjectRootManager" version="2" project-jdk-name="1.8.0_171" project-jdk-type="JavaSDK" />
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_9" default="false" project-jdk-name="13" project-jdk-type="JavaSDK" />
 </project>

+ 99 - 222
fhKeeper/.idea/workspace.xml

@@ -1,116 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="ChangeListManager">
-    <list default="true" id="cb73d8d0-9c49-4c8b-8fdc-51c4a9bc4409" name="Default Changelist" comment="官网修改完成">
-      <change beforePath="$PROJECT_DIR$/.idea/compiler.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/compiler.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_alibaba_fastjson_1_2_7.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baidu_aip_java_sdk_4_2_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_1_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_1_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_1_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_1_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_1_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_generator_3_1_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_classmate_1_4_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_10.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_10.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_10_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_10.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_10.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_10.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_2_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_pagehelper_pagehelper_5_1_10.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_pagehelper_pagehelper_spring_boot_autoconfigure_1_2_12.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_pagehelper_pagehelper_spring_boot_starter_1_2_12.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_virtuald_curvesapi_1_04.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_protobuf_protobuf_java_3_6_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_zaxxer_HikariCP_3_2_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__commons_codec_commons_codec_1_11.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_lettuce_lettuce_core_5_1_8_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_buffer_4_1_43_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_codec_4_1_43_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_common_4_1_43_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_handler_4_1_43_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_resolver_4_1_43_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_netty_netty_transport_4_1_43_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__io_projectreactor_reactor_core_3_2_13_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__junit_junit_4_12.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__log4j_log4j_1_2_17.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__mysql_mysql_connector_java_8_0_18.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_16.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_9_16.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_commons_commons_collections4_4_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_8_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_2.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_poi_poi_3_17.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_poi_poi_ooxml_3_17.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_17.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_29.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_29.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_29.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_velocity_velocity_engine_core_2_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_assertj_assertj_core_3_11_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_freemarker_freemarker_2_3_23.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_18_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_3_Final.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_json_json_20160810.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mockito_mockito_core_2_23_4.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mybatis_mybatis_3_5_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_2_0_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_2_0_1.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_projectlombok_lombok_1_18_8.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_29.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_29.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_redis_2_1_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_2_1_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_1_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_1_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_1_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_1_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_1_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_1_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_1_11_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_data_spring_data_commons_2_1_14_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_data_spring_data_keyvalue_2_1_14_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_data_spring_data_redis_2_1_14_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_aop_5_1_12_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_beans_5_1_12_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_context_5_1_12_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_context_support_5_1_12_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_core_5_1_12_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_expression_5_1_12_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_jcl_5_1_12_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_jdbc_5_1_12_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_oxm_5_1_12_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_test_5_1_12_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_tx_5_1_12_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_web_5_1_12_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_springframework_spring_webmvc_5_1_12_RELEASE.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_6_3.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_yaml_snakeyaml_1_23.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__stax_stax_api_1_0_1.xml" beforeDir="false" />
+    <list default="true" id="cb73d8d0-9c49-4c8b-8fdc-51c4a9bc4409" name="Default Changelist" comment="官网修改">
+      <change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/formulahousekeeper/inva_4_tivo/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/formulahousekeeper/inva_4_tivo/index.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/formulahousekeeper/timesheet/config/index.js" beforeDir="false" afterPath="$PROJECT_DIR$/formulahousekeeper/timesheet/config/index.js" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/formulahousekeeper/timesheet/src/routes.js" beforeDir="false" afterPath="$PROJECT_DIR$/formulahousekeeper/timesheet/src/routes.js" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/formulahousekeeper/target/" />
     <ignored path="$PROJECT_DIR$/formulahousekeeper/management-platform/target/" />
@@ -129,86 +24,11 @@
   </component>
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="375">
-      <file leaf-file-name="application.yml" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/resources/application.yml">
+      <file leaf-file-name="PlatformStartApplication.java" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/java/com/management/platform/PlatformStartApplication.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="323">
-              <caret line="17" column="18" selection-start-line="17" selection-start-column="18" selection-end-line="17" selection-end-column="18" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="ReportController.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="76">
-              <caret line="17" selection-start-line="17" selection-end-line="17" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="Report.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Report.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="646">
-              <caret line="44" column="29" selection-start-line="44" selection-start-column="29" selection-end-line="44" selection-end-column="29" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="User.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/User.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="437">
-              <caret line="30" column="22" selection-start-line="30" selection-start-column="22" selection-end-line="30" selection-end-column="22" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="application-prod.yml" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/resources/application-prod.yml">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="817">
-              <caret line="43" column="12" selection-start-line="43" selection-start-column="12" selection-end-line="43" selection-end-column="12" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="CodeGenerator.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/CodeGenerator.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="2318">
-              <caret line="141" column="47" selection-start-line="141" selection-start-column="47" selection-end-line="141" selection-end-column="47" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="ReportMapper.xml" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="133">
-              <caret line="7" column="48" selection-start-line="7" selection-start-column="48" selection-end-line="7" selection-end-column="48" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="TimingTask.java" pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="350">
-              <caret line="29" column="19" selection-start-line="29" selection-start-column="19" selection-end-line="29" selection-end-column="19" />
-              <folding>
-                <element signature="imports" expanded="true" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="UserServiceImpl.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="1102">
-              <caret line="58" column="27" selection-start-line="58" selection-start-column="27" selection-end-line="58" selection-end-column="27" />
+            <state relative-caret-position="239">
+              <caret line="28" column="71" lean-forward="true" selection-start-line="28" selection-start-column="71" selection-end-line="28" selection-end-column="71" />
             </state>
           </provider>
         </entry>
@@ -308,13 +128,52 @@
               <item name="fhKeeper" type="462c0819:PsiDirectoryNode" />
               <item name="formulahousekeeper" type="462c0819:PsiDirectoryNode" />
             </path>
+            <path>
+              <item name="fhKeeper" type="b2602c69:ProjectViewProjectNode" />
+              <item name="fhKeeper" type="462c0819:PsiDirectoryNode" />
+              <item name="formulahousekeeper" type="462c0819:PsiDirectoryNode" />
+              <item name="management-platform" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="fhKeeper" type="b2602c69:ProjectViewProjectNode" />
+              <item name="fhKeeper" type="462c0819:PsiDirectoryNode" />
+              <item name="formulahousekeeper" type="462c0819:PsiDirectoryNode" />
+              <item name="management-platform" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="fhKeeper" type="b2602c69:ProjectViewProjectNode" />
+              <item name="fhKeeper" type="462c0819:PsiDirectoryNode" />
+              <item name="formulahousekeeper" type="462c0819:PsiDirectoryNode" />
+              <item name="management-platform" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="fhKeeper" type="b2602c69:ProjectViewProjectNode" />
+              <item name="fhKeeper" type="462c0819:PsiDirectoryNode" />
+              <item name="formulahousekeeper" type="462c0819:PsiDirectoryNode" />
+              <item name="management-platform" 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="fhKeeper" type="b2602c69:ProjectViewProjectNode" />
+              <item name="fhKeeper" type="462c0819:PsiDirectoryNode" />
+              <item name="formulahousekeeper" type="462c0819:PsiDirectoryNode" />
+              <item name="management-platform" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="resources" type="462c0819:PsiDirectoryNode" />
+            </path>
           </expand>
           <select />
         </subPane>
       </pane>
       <pane id="PackagesPane" />
-      <pane id="Scope" />
       <pane id="AndroidView" />
+      <pane id="Scope" />
     </panes>
   </component>
   <component name="PropertiesComponent">
@@ -327,9 +186,12 @@
     <property name="WebServerToolWindowFactoryState" value="false" />
     <property name="add_unversioned_files" value="$PROJECT_DIR$/.idea/workspace.xml&#10;D:/wtt/项目/manHourHousekeeper/fhKeeper/formulahousekeeper/formulahousekeeper.iml" />
     <property name="aspect.path.notification.shown" value="true" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/../../yunsu" />
     <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
     <property name="nodejs_npm_path_reset_for_default_project" value="true" />
+    <property name="project.structure.last.edited" value="Project" />
+    <property name="project.structure.proportion" value="0.0" />
+    <property name="project.structure.side.proportion" value="0.0" />
     <property name="settings.editor.selected.configurable" value="MavenSettings" />
   </component>
   <component name="RecentsManager">
@@ -466,7 +328,9 @@
       <workItem from="1577864993756" duration="599000" />
       <workItem from="1577928198872" duration="3146000" />
       <workItem from="1579946786216" duration="242000" />
-      <workItem from="1580712530176" duration="749000" />
+      <workItem from="1580712530176" duration="1479000" />
+      <workItem from="1580714920655" duration="1048000" />
+      <workItem from="1580716496483" duration="548000" />
     </task>
     <task id="LOCAL-00001" summary="构建">
       <created>1577760711854</created>
@@ -538,7 +402,28 @@
       <option name="project" value="LOCAL" />
       <updated>1579946884324</updated>
     </task>
-    <option name="localTasksCounter" value="11" />
+    <task id="LOCAL-00011" summary="官网修改">
+      <created>1580713564327</created>
+      <option name="number" value="00011" />
+      <option name="presentableId" value="LOCAL-00011" />
+      <option name="project" value="LOCAL" />
+      <updated>1580713564327</updated>
+    </task>
+    <task id="LOCAL-00012" summary="官网修改">
+      <created>1580713740320</created>
+      <option name="number" value="00012" />
+      <option name="presentableId" value="LOCAL-00012" />
+      <option name="project" value="LOCAL" />
+      <updated>1580713740320</updated>
+    </task>
+    <task id="LOCAL-00013" summary="官网修改">
+      <created>1580714103728</created>
+      <option name="number" value="00013" />
+      <option name="presentableId" value="LOCAL-00013" />
+      <option name="project" value="LOCAL" />
+      <updated>1580714103728</updated>
+    </task>
+    <option name="localTasksCounter" value="14" />
     <servers />
   </component>
   <component name="TestHistory">
@@ -565,13 +450,13 @@
     </history-entry>
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="24783000" />
+    <option name="totallyTimeSpent" value="27109000" />
   </component>
   <component name="ToolWindowManager">
     <frame x="-7" y="-7" width="1550" height="838" extended-state="6" />
     <layout>
       <window_info anchor="right" id="Palette" order="4" />
-      <window_info anchor="bottom" id="Event Log" order="10" side_tool="true" />
+      <window_info active="true" anchor="bottom" id="Event Log" order="10" sideWeight="0.50130206" side_tool="true" visible="true" weight="0.26575342" />
       <window_info anchor="bottom" id="JRebel Console" order="15" sideWeight="0.50107414" side_tool="true" weight="0.2580288" />
       <window_info anchor="right" id="Maven Projects" order="5" />
       <window_info anchor="bottom" id="Database Changes" order="12" />
@@ -586,13 +471,12 @@
       <window_info anchor="bottom" id="TODO" order="6" />
       <window_info anchor="right" id="Palette&#9;" order="9" />
       <window_info id="Image Layers" order="4" />
-      <window_info anchor="bottom" id="Java Enterprise" order="11" />
       <window_info anchor="right" id="Capture Analysis" order="5" />
-      <window_info anchor="bottom" id="Version Control" order="13" visible="true" weight="0.35890412" />
+      <window_info anchor="bottom" id="Version Control" order="13" sideWeight="0.4986979" visible="true" weight="0.26575342" />
       <window_info anchor="bottom" id="Run" order="2" sideWeight="0.4989259" weight="0.45071983" />
       <window_info anchor="bottom" id="Terminal" order="8" />
+      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.1875" />
       <window_info anchor="bottom" id="Problems" order="17" />
-      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.1875" />
       <window_info id="Web" order="8" side_tool="true" />
       <window_info id="JRebel" order="3" side_tool="true" />
       <window_info anchor="right" id="Theme Preview" order="10" />
@@ -601,7 +485,7 @@
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
       <window_info anchor="bottom" id="Docker" order="9" show_stripe_button="false" />
       <window_info anchor="right" id="aiXcoder" order="7" />
-      <window_info anchor="right" id="Bean Validation" order="12" />
+      <window_info anchor="bottom" id="Java Enterprise" order="11" />
       <window_info anchor="right" id="Maven" order="3" visible="true" weight="0.09344791" />
       <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
       <window_info anchor="right" id="Key Promoter X" order="6" />
@@ -611,6 +495,7 @@
       <window_info anchor="bottom" id="Find" order="1" weight="0.32890365" />
       <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
       <window_info anchor="bottom" id="Message" order="0" />
+      <window_info anchor="right" id="Bean Validation" order="12" />
     </layout>
   </component>
   <component name="TypeScriptGeneratedFilesManager">
@@ -626,7 +511,8 @@
     <MESSAGE value="移动mapper.xml位置" />
     <MESSAGE value="暂停定时任务" />
     <MESSAGE value="官网修改完成" />
-    <option name="LAST_COMMIT_MESSAGE" value="官网修改完成" />
+    <MESSAGE value="官网修改" />
+    <option name="LAST_COMMIT_MESSAGE" value="官网修改" />
   </component>
   <component name="editorHistoryManager">
     <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/resources/application-prod.yml">
@@ -668,9 +554,6 @@
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="133">
           <caret line="29" column="19" selection-start-line="29" selection-start-column="19" selection-end-line="29" selection-end-column="19" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
         </state>
       </provider>
     </entry>
@@ -741,9 +624,6 @@
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="133">
           <caret line="29" column="19" lean-forward="true" selection-start-line="29" selection-start-column="19" selection-end-line="29" selection-end-column="19" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
         </state>
       </provider>
     </entry>
@@ -841,13 +721,6 @@
     <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/resources/templates/index.html">
       <provider selected="true" editor-type-id="text-editor" />
     </entry>
-    <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/java/com/management/platform/PlatformStartApplication.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="286">
-          <caret line="17" column="5" selection-start-line="17" selection-start-column="5" selection-end-line="17" selection-end-column="5" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/.gitignore">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="220">
@@ -904,13 +777,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/resources/application.yml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="323">
-          <caret line="17" column="18" selection-start-line="17" selection-start-column="18" selection-end-line="17" selection-end-column="18" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/resources/application-prod.yml">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="817">
@@ -939,9 +805,20 @@
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="350">
           <caret line="29" column="19" selection-start-line="29" selection-start-column="19" selection-end-line="29" selection-end-column="19" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/resources/application.yml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="323">
+          <caret line="17" column="18" selection-start-line="17" selection-start-column="18" selection-end-line="17" selection-end-column="18" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/formulahousekeeper/management-platform/src/main/java/com/management/platform/PlatformStartApplication.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="239">
+          <caret line="28" column="71" lean-forward="true" selection-start-line="28" selection-start-column="71" selection-end-line="28" selection-end-column="71" />
         </state>
       </provider>
     </entry>

+ 100 - 8
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ScreenshotServiceImpl.java

@@ -163,10 +163,10 @@ public class ScreenshotServiceImpl extends ServiceImpl<ScreenshotMapper, Screens
         } else if (isDocument(textContents)) {
             screenshot.setPicType(2);//看文档
         } else if (isDevelop(picFile) != null) {//开发
-            screenshot.setPicType(7);
+            screenshot.setPicType(0);
         }
         screenshot.setIsHandle(1);
-        if (screenshot.getPicType() == null) {
+        if (screenshot.getPicType() == null && isEntertainmentColorMode(picFile)) {
             //判断是否是娱乐:看电影, 打游戏
             String uid = screenshotvo.getUid();
             Screenshot preShot = screenshotMapper.selectOne(new QueryWrapper<Screenshot>().eq("uid", uid).orderByDesc("indate").last("limit 1"));
@@ -290,7 +290,8 @@ public class ScreenshotServiceImpl extends ServiceImpl<ScreenshotMapper, Screens
     }
 
     public static void main(String[] args) throws Exception {
-//        isDevelop(new File("C:\\Users\\seya\\Desktop\\3.jpg"));
+//        String b = isDevelop(new File("C:\\Users\\seya\\Desktop\\proj.jpg"));
+//        System.out.println("结果:"+b);
     }
 
     private static boolean isPureColor(BufferedImage img, int colorPixel) {
@@ -396,8 +397,9 @@ public class ScreenshotServiceImpl extends ServiceImpl<ScreenshotMapper, Screens
 
     //判断是否是浏览器
     private String isBrowser(File pic) throws Exception {
-        System.out.println("picrecongnizeFolder=="+browserFolder);
+//        System.out.println("picrecongnizeFolder=="+browserFolder);
         File folder = new File(browserFolder);
+//        File folder = new File("C:/picrecongnize/browser/");
         if (!folder.exists()) {
             throw new Exception("没有设置图片上传的浏览器比对模板库");
         } else {
@@ -441,10 +443,6 @@ public class ScreenshotServiceImpl extends ServiceImpl<ScreenshotMapper, Screens
                 System.out.println("targetPic==" + targetPic.getAbsolutePath());
                 boolean matchPic = ImageReconizeUtil.isTemplateMatch(pic.getAbsolutePath(), targetPic.getAbsolutePath());
                 if (matchPic) {
-                    isMatch = true;
-                    break;
-                }
-                if (isMatch) {
                     toolName = targetPic.getName();
                     break;
                 }
@@ -474,4 +472,98 @@ public class ScreenshotServiceImpl extends ServiceImpl<ScreenshotMapper, Screens
         }
         return find;
     }
+
+    //娱乐类: 电影+游戏; 画面比较丰富的
+    public static boolean isEntertainmentColorMode(File pic) {
+        try {
+            int[] rgb = new int[3];
+            if (!pic.exists()) {
+                System.err.println("文件不存在" + pic.getAbsolutePath());
+            } else {
+                System.out.println("找到文件"  + pic.getAbsolutePath());
+            }
+            BufferedImage img = ImageIO.read(pic);
+            int width = img.getWidth();
+            int height = img.getHeight();
+            int minx = img.getMinX();
+            int miny = img.getMinY();
+            System.out.println("width=" + width + ",height=" + height + ".");
+            System.out.println("minx=" + minx + ",miniy=" + miny + ".");
+            //统计出现最多的一个色值,计算所占比重
+            int totalPixl = 0;
+            HashMap<Integer, Integer> colorCntMap = new HashMap<Integer, Integer>();
+            for (int i = minx; i < width; i++) {
+                for (int j = miny; j < height; j++) {
+                    totalPixl++;
+                    int pixel = img.getRGB(i, j); // 下面三行代码将一个数字转换为RGB数字
+                    if (colorCntMap.get(pixel) == null) {
+                        colorCntMap.put(pixel, 1);
+                    } else {
+                        colorCntMap.put(pixel, colorCntMap.get(pixel) + 1);
+                    }
+                }
+            }
+
+            Map<Integer, Integer> sMap = new TreeMap<Integer, Integer>();
+            int maxCnt = 0;
+            int key = 0;
+            Set<Map.Entry<Integer, Integer>> entry2 = colorCntMap.entrySet();
+            for (Map.Entry<Integer, Integer> temp : entry2) {
+//                System.out.println("sortedMap:"+temp.getKey()+" 值"+temp.getValue());
+                if (temp.getValue() > maxCnt) {
+                    maxCnt = temp.getValue();
+                    key = temp.getKey();
+                }
+                sMap.put(temp.getValue(), temp.getKey());
+            }
+            sMap = ((TreeMap) sMap).descendingMap();
+            Iterator it = sMap.keySet().iterator();
+            Integer k1 = (Integer) it.next();
+            Integer k2 = (Integer) it.next();
+            Integer color1 = sMap.get(k1);
+            Integer color2 = sMap.get(k2);
+            System.out.println("kkkk==" + k1 + "," + color1 + "," + k2 + "," + color2);
+            System.out.println("最.." + maxCnt + ", key=" + key);
+            rgb[0] = (key & 0xff0000) >> 16;
+            rgb[1] = (key & 0xff00) >> 8;
+            rgb[2] = (key & 0xff);
+            System.out.println("色值为: " + rgb[0] + ", " + rgb[1] + ", " + rgb[2]);
+            //计算比例, 应该不低于50%
+            int colorPercent = maxCnt * 100 / totalPixl;
+            if (colorPercent < 50) {
+                //可能存在2中底色, 大布局的底色和小模块的底色,都算底色。
+                int secPercent = k2 * 100 / totalPixl;
+                rgb[0] = (color2 & 0xff0000) >> 16;
+                rgb[1] = (color2 & 0xff00) >> 8;
+                rgb[2] = (color2 & 0xff);
+                System.out.println("二级底色色值为: " + rgb[0] + ", " + rgb[1] + ", " + rgb[2]);
+                System.out.println("二级底色比例==" + secPercent);
+                colorPercent = (k1 + k2) * 100 / totalPixl;
+            }
+            System.out.println("总底色比例==" + colorPercent);
+            //计算底色是否是连续分布的
+            int windowSize = 50;
+            int pureColorBlockCnt = 0;
+            int totalBlockCnt = 0;
+            for (int i = minx; i < width - windowSize; i += windowSize) {
+                for (int j = miny; j < height - windowSize; j += windowSize) {
+                    totalBlockCnt++;
+                    BufferedImage rect = img.getSubimage(i, j, windowSize, windowSize);
+                    if (isPureColor(rect, key)) {
+                        pureColorBlockCnt++;
+                    }
+                }
+            }
+            log.info("pureColorBlockCnt===" + pureColorBlockCnt);
+            int pureColorBlackPercent = pureColorBlockCnt * 100 / totalBlockCnt;
+            log.info("pureColorBlackPercent===" + pureColorBlackPercent);
+            if (colorPercent < 50 && pureColorBlackPercent < 30) {
+                return true;
+            }
+        } catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        return false;
+    }
 }

+ 4 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/ImageCompare.java

@@ -278,7 +278,6 @@ public class ImageCompare {
         System.out.println("hitCount="+hitCount+", percent="+(100*hitCount/allPoints.size())+"%");
         int percent = (100*hitCount/allPoints.size());
 
-
         if (percent > 80) {
             return true;//
         } else {
@@ -287,10 +286,12 @@ public class ImageCompare {
     }
 
     public static void main(String[] args) {
-        String img1 = "C:\\Users\\seya\\Desktop\\m1.jpg";
-        String img2 = "C:\\Users\\seya\\Desktop\\m2.jpg";
+        String img1 = "C:\\Users\\seya\\Desktop\\e.jpg";
+        String img2 = "C:\\Users\\seya\\Desktop\\d.jpg";
         ImageCompare ip = new ImageCompare();
         System.out.println("是电影娱乐吗?"+ip.test(img1, img2));
     }
+
+
 }
 

+ 9 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/ImageReconizeUtil.java

@@ -1,6 +1,7 @@
 package com.management.platform.util;
 
 import org.opencv.core.*;
+import org.opencv.highgui.HighGui;
 import org.opencv.imgcodecs.Imgcodecs;
 import org.opencv.imgproc.Imgproc;
 
@@ -10,7 +11,7 @@ import static java.lang.Math.E;
 import static org.opencv.imgproc.Imgproc.*;
 
 public class ImageReconizeUtil {
-    public static final double YUZHI = 5*Math.pow(0.1, 11);
+    public static final double YUZHI = 1*Math.pow(0.1, 11);
     static {
         System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
         //注意程序运行的时候需要在VM option添加该行 指明opencv的dll文件所在路径
@@ -102,8 +103,13 @@ public class ImageReconizeUtil {
 //        }
         System.out.println("匹配度=="+matchVal);
         System.out.println("x="+x+", y=" + y);
-        Imgproc.rectangle(templete,new Point(x,y),new Point(x+demo.cols(),y+demo.rows()),new Scalar( 0, 0, 255),2,Imgproc.LINE_AA);
-        Imgproc.putText(templete,"Match Success",new Point(x,y),Imgproc.FONT_HERSHEY_SCRIPT_COMPLEX, 1.0, new Scalar(0, 255, 0),1,Imgproc.LINE_AA);
+        //我们匹配的图像在左上角,考虑到用户可能拖动窗口,但是不应该偏差很大。 这里增加判断标准:坐标需要处在第一象限。
+        if (x > templete.width()/2 || y > templete.height()) {
+            System.out.println("坐标非第一象限");
+            return 1;
+        }
+//        Imgproc.rectangle(templete,new Point(x,y),new Point(x+demo.cols(),y+demo.rows()),new Scalar( 0, 0, 255),2,Imgproc.LINE_AA);
+//        Imgproc.putText(templete,"Match Success",new Point(x,y),Imgproc.FONT_HERSHEY_SCRIPT_COMPLEX, 1.0, new Scalar(0, 255, 0),1,Imgproc.LINE_AA);
 //        // 8 显示结果
 //        HighGui.imshow("模板匹配", templete);
 //        HighGui.waitKey(0);

+ 89 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/application-dev.yml

@@ -0,0 +1,89 @@
+server:
+  port: 10010
+  tomcat:
+    uri-encoding: utf-8
+    max-http-form-post-size: -1
+    connection-timeout: 18000000s
+spring:
+  servlet:
+    multipart:
+      # 配置上传文件的大小设置
+      # Single file max size  即单个文件大小
+      max-file-size: 10000MB
+      max-request-size: 10000MB
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://118.190.47.230:3306/man_hour_manager?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
+    username: root
+    password: p011430seya1026
+    hikari:
+      maximum-pool-size: 10
+      minimum-idle: 3
+      max-lifetime: 30000
+      connection-test-query: SELECT 1
+    #######redis配置######
+    # redis
+    redis:
+      host: 118.190.47.230
+      port: 6379
+      timeout: 3
+      # password:
+      pool:
+        minIdle: 1
+        maxIdle: 10
+        maxWait: 3
+        maxActive: 8
+    ####全局配置时间返回格式#####
+  jackson:
+    #参数意义:
+    #JsonInclude.Include.ALWAYS       默认
+    #JsonInclude.Include.NON_DEFAULT   属性为默认值不序列化
+    #JsonInclude.Include.NON_EMPTY     属性为 空(””) 或者为 NULL 都不序列化
+    #JsonInclude.Include.NON_NULL      属性为NULL  不序列化
+    default-property-inclusion: ALWAYS
+    time-zone: GMT+8
+    date-format: yyyy-MM-dd HH:mm:ss
+
+##########日志配置
+logging:
+  level:
+    root: info
+    org.mybatis: debug
+    java.sql: debug
+    org.springframework.web: trace
+    #打印sql语句
+    com.management.platform.mapper: debug
+  path: E:/
+##########
+mybatis-plus:
+  #  mapper-locations: classpath:mapper/*/*.xml
+  #  #实体扫描,多个package用逗号或者分号分隔
+  #  typeAliasesPackage: com.hssx.cloudmodel
+  global-config:
+    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
+    id-type: 0
+    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
+    field-strategy: 2
+    db-column-underline: true
+    refresh-mapper:
+    #################插入和更新非null判断
+    db-config:
+      insert-strategy: not_null
+      update-strategy: not_null
+  configuration:
+    map-underscore-to-camel-case: true
+    cache-enabled: false
+######mybstis配置#######
+mybatis:
+  type-aliases-package: com.management.platform.entity
+  mapper-locations: mappers/*Mapper.xml
+#####配置图片上传路径####
+upload:
+  path: E:/staticproject/timesheet/upload/
+picrecongnize:
+  browser: E:/picrecongnize/browser/
+  develop: E:/picrecongnize/develop/
+
+
+
+

+ 2 - 2
fhKeeper/formulahousekeeper/mywork/constants.h

@@ -1,4 +1,4 @@
-#ifndef CONSTANTS_H
+#ifndef CONSTANTS_H
 #define CONSTANTS_H
 
 #define API_ACCEPT "*/*"
@@ -7,5 +7,5 @@
 #define API_SECRET "secrect"
 #define SETTING_ACCOUNT_ID "id"
 #define SETTING_ACCOUNT_TOKEN "token"
-
+//#define SERVER_URL "http://47.100.37.243:10010"
 #endif // CONSTANTS_H

+ 12 - 8
fhKeeper/formulahousekeeper/mywork/home.cpp

@@ -26,12 +26,13 @@ Home::Home(QWidget *parent) :
     ui(new Ui::Home)
 {
     ui->setupUi(this);
+
     myTimer = new QTimer(this);
     //start timer for screen capture
     connect(myTimer,&QTimer::timeout,[this](){
             captureScreen();
     });
-    myTimer->start(10000);
+    myTimer->start(60000);
     setWindowTitle(tr("智能工时管家"));
     //set ui data
     webWidget = new QWebEngineView(this);
@@ -50,7 +51,7 @@ Home::Home(QWidget *parent) :
   qs->beginGroup("user");
   QString id = qs->value("id").toString();
   qDebug() << "id=="<<id<<", phone="<<qs->value("name").toString();
-  QString str = "http://47.100.37.243:9092/#/desktop/" + id;
+  QString str = HOME_PAGE_URL + id;
   loadNavigate(str);
 
 }
@@ -65,12 +66,13 @@ void Home::captureScreen() {
         uchar* data = oldImg.bits();
         int height = oldImg.height();
         int width = oldImg.width();
-
-        screen->grabWindow(0).save(filePathName, "jpg"); // 0值为整个电脑屏幕WId
+        bool result = screen->grabWindow(0).save(filePathName, "jpg"); // 0值为整个电脑屏幕WId
+        if (!result) {
+            QMessageBox msg3(QMessageBox::Information,windowTitle(),"请尝试使用管理员运行程序!",QMessageBox::Ok,this);
+            msg3.exec();
+        }
         //判断图像是否和之前的那个一样
         QImage curImg = QImage(filePathName);
-
-
         int curHeight = curImg.height();
         int curWidth = curImg.width();
         uchar* curData = curImg.bits();
@@ -103,6 +105,8 @@ void Home::captureScreen() {
         } else {
             similarPercent = 0;
         }
+        QString qs = QString::number(similarPercent);
+
         if (similarPercent >= 95) {//相似度90%以上,认为是一样的,不要上传
             qDebug() << "不上传!!!";
             return;
@@ -114,6 +118,7 @@ void Home::captureScreen() {
 
     //start upload file
     QNetworkRequest request;
+
     request.setUrl(QUrl(SERVER_URL + "/imageProcessing/saveAndProcessImage"));
     QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
     QHttpPart imagePart;
@@ -201,13 +206,12 @@ Home::~Home()
 }
 void Home::closeEvent ( QCloseEvent * e )
 {
-    if( QMessageBox::question(this,
+    if(QMessageBox::question(this,
                              tr("退出"),
                              tr("退出软件将无法统计到您的工时,影响绩效,您确定要退出吗?"),
                               QMessageBox::Yes, QMessageBox::No )
                    == QMessageBox::Yes){
         e->accept();//不会将事件传递给组件的父组件
-
         qDebug()<<"ok";
     }
     else

+ 3 - 1
fhKeeper/formulahousekeeper/mywork/home.h

@@ -1,13 +1,15 @@
-#ifndef HOME_H
+#ifndef HOME_H
 #define HOME_H
 
 #include <QMainWindow>
 #include <QTimer>
 #include <QtWebEngineWidgets>
+#include "constants.h"
 //#include "Windows.h"
 #define GWL_HWNDPARENT = -8
 #define GCL_HICON = -14
 #define GCL_MENUNAME = -8
+const QString HOME_PAGE_URL = QString("http://47.100.37.243:9092/#/desktop/");
 
 namespace Ui {
 class Home;

+ 3 - 2
fhKeeper/formulahousekeeper/mywork/httpapi.h

@@ -6,8 +6,9 @@
 #include <QPair>
 #include <QJsonObject>
 #include "baseapi.h"
-const QString SERVER_URL = QString("http://127.0.0.1:10010");
-//const QString SERVER_URL = QString("http://47.100.37.243:10010");
+#include "constants.h"
+//const QString SERVER_URL = QString("http://127.0.0.1:10010");
+const QString SERVER_URL = QString("http://47.100.37.243:10010");
 class HttpAPI: public BaseAPI
 {
 public:

+ 1 - 5
fhKeeper/formulahousekeeper/timesheet/src/http.js

@@ -12,11 +12,7 @@ function handleResults (response) {
 }
 
 function handleUrl (url) {
-    if(url.indexOf('.do') > -1) {
-        url = LINK_URL + url;
-    } else {
-        url = BASE_URL + url;
-    }
+    url = BASE_URL + url;
     return url
 }
 

+ 1 - 0
fhKeeper/formulahousekeeper/timesheet/src/port.js

@@ -25,6 +25,7 @@ export default {
     //项目
     project: {
         list: '/project/getProjectList', //获取项目列表
+        listPage: '/project/getProjectPage',//获取项目列表分页
         delete: '/project/deleteProject', //删除项目
         add: '/project/editProject', //新增项目
         listCost: '/project/getTimeCost', //获取所有项目花费的工时

+ 17 - 0
fhKeeper/formulahousekeeper/timesheet/src/routes.js

@@ -13,6 +13,11 @@ import unusual from './views/desktop/unusual.vue'
 import statistics from './views/workReport/statistics.vue'
 import daily from './views/workReport/daily.vue'
 
+// 项目管理
+import list from './views/project/list.vue'
+import proDetail from './views/project/detail.vue'
+import cost from './views/project/cost.vue'
+
 // 团队管理
 import team from './views/team/index.vue'
 
@@ -55,6 +60,18 @@ let routes = [
             { path: '/daily', component: daily, name: '工作日报' },
         ]
     },
+    //项目管理
+    {
+        path: '/',
+        component: Home,
+        name: '项目管理',
+        iconCls: 'fa fa-briefcase',
+        children: [
+            { path: '/list', component: list, name: '项目列表' },
+            { path: '/list/:id/:name', component: proDetail, name: '项目详情', hidden: true },
+            { path: '/cost', component: cost, name: '成本统计' },
+        ]
+    },
     //团队管理
     {
         path: '/',

+ 112 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/project/cost.vue

@@ -0,0 +1,112 @@
+<template>
+    <div id="container"></div> 
+</template>
+
+<script>
+    import util from "../../common/js/util";
+    export default {
+        data() {
+            return {
+                user: JSON.parse(sessionStorage.getItem("user")),
+
+                myChart: null
+            };
+        },
+        methods: {
+            getEchart(){
+                var _this = this;
+                this.http.post(this.port.project.listCost, {},
+                res => {
+                    if (res.code == "ok") {
+                        var xList = [],yList = [] , list = res.data;
+                        for(var i in list) {
+                            xList.push(list[i].project);
+                            yList.push(list[i].cost);
+                        }
+
+                        var myChart = echarts.init(document.getElementById("container"));
+                        _this.myChart = myChart;
+                        var option = {
+                            title: {
+                                text: '项目成本统计',
+                                left:'left',
+                            },
+                            // 工具箱
+                            toolbox: {
+                                show: true,
+                                feature:{
+                                    saveAsImage:{
+                                        show:true
+                                    },
+                                    restore:{
+                                        show:true
+                                    },
+                                    dataView:{
+                                        show:true
+                                    },
+                                    dataZoom:{
+                                        show:true
+                                    },
+                                    magicType:{
+                                        type:['line','bar']
+                                    }
+                                }
+                            },
+                            tooltip:{
+                                trigger:'axis'
+                            },
+                            xAxis: {
+                                data: xList,
+                                axisLabel: {
+                                    interval:0,rotate:40
+                                }
+                            },
+                            yAxis: {},
+                            series: [{
+                                name: '工作时长(h)',
+                                type: 'bar',
+                                data: yList,
+                            }]
+                        };
+                        myChart.setOption(option);
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
+            }
+        },
+        created() {
+        },
+        mounted() {
+            this.$el.style.height = (window.innerHeight - 100) + "px";
+            const that = this;
+            window.onresize = function temp() {
+                that.$el.style.height = (window.innerHeight - 100) + "px";
+            };
+            this.getEchart();
+            var _this = this;
+            window.addEventListener("resize", function() {
+                _this.myChart.resize();
+            });
+        }
+    };
+</script>
+
+<style lang="scss" scoped>
+    #container {
+        width: 100%; 
+        margin-top: 10px;
+    }  
+</style>
+
+<style lang="scss">
+</style>

+ 142 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/project/detail.vue

@@ -0,0 +1,142 @@
+<template>
+    <section>
+        <!--工具条-->
+        <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
+            <el-form :inline="true">
+                <el-form-item>
+                    <el-button type="text" @click="backToList" icon="el-icon-back" class="back">返回</el-button>
+                </el-form-item>
+                <el-form-item class="divLine"></el-form-item>
+                <el-form-item>
+                    <span class="workName">{{detailName}}</span>
+                </el-form-item>
+            </el-form>
+        </el-col>
+
+        <!--列表-->
+        <el-table :data="list" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
+            <el-table-column type="index" width="60"></el-table-column>
+            <el-table-column prop="name" label="人员名称" sortable></el-table-column>
+            <el-table-column prop="cost" label="分配时长(h)" sortable></el-table-column>
+        </el-table>
+
+        <!--工具条-->
+        <el-col :span="24" class="toolbar">
+            <el-pagination
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+                :page-sizes="[20 , 50 , 80 , 100]"
+                :page-size="20"
+                layout="total, sizes, prev, pager, next"
+                :total="total"
+                style="float:right;"
+            ></el-pagination>
+        </el-col>
+    </section>
+</template>
+
+<script>
+    import util from "../../common/js/util";
+
+    export default {
+        data() {
+            return {
+                detailId: this.$route.params.id,
+                detailName: this.$route.params.name,
+
+                user: JSON.parse(sessionStorage.getItem("user")),
+
+                tableHeight: 0,
+                listLoading: false,
+                total: 0,
+                page: 1,
+                size: 20,
+                list: [],
+            };
+        },
+        methods: {
+            //返回
+            backToList() {
+                this.$router.go(-1);
+            },
+
+            //分页
+            handleCurrentChange(val) {
+                this.page = val;
+                this.getList();
+            },
+
+            handleSizeChange(val) {
+                this.size = val;
+                this.getList();
+            },
+
+            //获取项目列表
+            getList() {
+                this.listLoading = true;
+                this.http.post(this.port.project.projectCost, {
+                    id: this.detailId,
+                },
+                res => {
+                    this.listLoading = false;
+                    if (res.code == "ok") {
+                        this.list = res.data//.records;
+                        this.total = res.data.total;
+                    } else {
+                        this.$message({
+                        message: res.msg,
+                        type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.listLoading = false;
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
+            },
+        },
+        created() {
+            let height = window.innerHeight;
+            this.tableHeight = height - 195;
+            const that = this;
+            window.onresize = function temp() {
+                that.tableHeight = window.innerHeight - 195;
+            };
+        },
+        mounted() {
+            this.getList();
+        }
+    };
+</script>
+
+<style lang="scss" scoped>
+    .toolbar {
+        .el-form-item {
+            font-size: 14px;
+            vertical-align: middle;
+        }
+        .back {
+            font-size: 16px;
+            cursor: pointer;
+        }
+        .divLine {
+            width: 2px;
+            background: #c3c3c3;
+            height: 100%;
+        }
+        .workName {
+            color: #333;
+            font-size: 18px;
+        }
+        .workHours {
+            color: #20a0ff;
+            font-size: 18px;
+        }
+    }
+</style>
+
+<style lang="scss">
+</style>

+ 228 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -0,0 +1,228 @@
+<template>
+    <section>
+    <!--工具条-->
+        <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
+            <el-form :inline="true">
+                <el-form-item style="float:right;">
+                    <el-link type="primary" :underline="false" @click="handleAdd(-1)">新增项目</el-link>
+                </el-form-item>
+            </el-form>
+        </el-col>
+
+        <!--列表-->
+        <el-table :data="list" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
+            <el-table-column type="index" width="60"></el-table-column>
+            <el-table-column prop="projectName" label="项目名称" sortable></el-table-column>
+            <el-table-column label="操作" width="220">
+                <template slot-scope="scope">
+                    <el-button size="small" type="primary" @click="detail(scope.$index)">详情</el-button>
+                    <el-button size="small" type="primary" @click="handleAdd(scope.$index)">编辑</el-button>
+                    <el-button size="small" type="danger" @click="deletePro(scope.$index)">删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+
+        <!--工具条-->
+        <el-col :span="24" class="toolbar">
+            <el-pagination
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+                :page-sizes="[20 , 50 , 80 , 100]"
+                :page-size="20"
+                layout="total, sizes, prev, pager, next"
+                :total="total"
+                style="float:right;"
+            ></el-pagination>
+        </el-col>
+
+        <!--新增界面-->
+        <el-dialog :title="title" v-if="addFormVisible" :visible.sync="addFormVisible" :close-on-click-modal="false" customClass="customWidth">
+            <el-form ref="form1" :model="addForm" :rules="rules" label-width="100px">
+                <el-form-item label="项目名称" prop="name">
+                    <el-input v-model="addForm.name" placeholder="请输入项目名称" clearable></el-input>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button @click.native="addFormVisible = false">取消</el-button>
+                <el-button type="primary" @click="submitInsert" :loading="addLoading">提交</el-button>
+            </div>
+        </el-dialog>
+    </section>
+</template>
+
+<script>
+    import util from "../../common/js/util";
+
+    export default {
+        data() {
+            return {
+                user: JSON.parse(sessionStorage.getItem("user")),
+
+                date: new Date(),
+
+                tableHeight: 0,
+                listLoading: false,
+                total: 0,
+                page: 1,
+                size: 20,
+                list: [],
+
+                addFormVisible: false,
+                addLoading: false,
+                title: "",
+                addForm: {
+                    name: '',
+                },
+                rules: {
+                    name: [{ required: true, message: "请输入项目名称", trigger: "blur" }],
+                }
+            };
+        },
+        methods: {
+            //分页
+            handleCurrentChange(val) {
+                this.page = val;
+                this.getList();
+            },
+
+            handleSizeChange(val) {
+                this.size = val;
+                this.getList();
+            },
+
+            //获取项目列表
+            getList() {
+                this.listLoading = true;
+                this.http.post(this.port.project.listPage, {
+                    pageIndex: this.page,
+                    pageSize: this.size
+                },
+                res => {
+                    this.listLoading = false;
+                    if (res.code == "ok") {
+                        this.list = res.data.records;
+                        this.total = res.data.total;
+                    } else {
+                        this.$message({
+                        message: res.msg,
+                        type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.listLoading = false;
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
+            },
+
+            //显示新增界面
+            handleAdd(i) {
+                if(i == -1) {
+                    this.title = "新增项目";
+                    this.addForm = {
+                        name: ''
+                    }
+                } else {
+                    this.title = "修改项目";
+                    this.addForm = {
+                        id: this.list[i].id,
+                        name: this.list[i].projectName
+                    }
+                }
+                this.addFormVisible = true;
+            },
+
+            submitInsert() {
+                this.$refs.form1.validate(valid => {
+                    if (valid) {
+                        this.addLoading = true;
+                        this.http.post(this.port.project.add,this.addForm,
+                        res => {
+                            this.addLoading = false;
+                            if (res.code == "ok") {
+                                this.$message({
+                                    message: this.addForm.id!=null?'修改':'创建'+"成功",
+                                    type: "success"
+                                });
+                                this.addFormVisible = false;
+                                this.getList();
+                            } else {
+                                this.$message({
+                                    message: res.msg,
+                                    type: "error"
+                                });
+                            }
+                        },
+                        error => {
+                            this.addLoading = false;
+                            this.$message({
+                                message: error,
+                                type: "error"
+                            });
+                        });
+                        }
+                });
+            },
+
+            // 删除
+            deletePro(i) {
+                this.$confirm("确定要项目" + this.list[i].projectName + "吗?","删除项目", {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning"
+                })
+                .then(() => {
+                    this.listLoading = true;
+                    this.http.post(this.port.project.delete,{ 
+                        id: this.list[i].id 
+                    },
+                    res => {
+                        this.listLoading = false;
+                        if (res.code == "ok") {
+                            this.$message({
+                                message: "删除成功",
+                                type: "success"
+                            });
+                            this.getList();
+                        } else {
+                            this.$message({
+                                message: res.msg,
+                                type: "error"
+                            });
+                        }
+                    },
+                    error => {
+                        this.listLoading = false;
+                        this.$message({
+                            message: error,
+                            type: "error"
+                        });
+                        }
+                    );
+                })
+                .catch(() => {});
+            },
+
+            detail(i) {
+                this.$router.push("/list/" + this.list[i].id + "/" + this.list[i].projectName);
+            }
+        },
+        created() {
+            let height = window.innerHeight;
+            this.tableHeight = height - 195;
+            const that = this;
+            window.onresize = function temp() {
+                that.tableHeight = window.innerHeight - 195;
+            };
+        },
+        mounted() {
+            this.getList();
+        }
+    };
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -18,9 +18,9 @@
         <el-form-item style="float:right;">
           <el-link type="primary" :underline="false" @click="exportReport">导出日报</el-link>
         </el-form-item>
-        <el-form-item style="float:right;">
+        <!-- <el-form-item style="float:right;">
           <el-link type="primary" :underline="false" @click="projectDialogVisible=true">项目管理</el-link>
-        </el-form-item>
+        </el-form-item> -->
       </el-form>
     </el-col>