Browse Source

Merge remote-tracking branch 'origin/test' into test

hxl13994548489 1 year ago
parent
commit
8f0441212d

+ 107 - 0
insagent.ipr

@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<project version="4" relativePaths="false"> 
+  <component name="ProjectRootManager" version="2" assert-keyword="true" project-jdk-name="15." jdk-15="true"/>  
+  <component name="CodeStyleManager"> 
+    <option name="USE_DEFAULT_CODE_STYLE_SCHEME" value="true"/>  
+    <option name="CODE_STYLE_SCHEME" value=""/> 
+  </component>  
+  <component name="libraryTable"/>  
+  <component name="CompilerConfiguration"> 
+    <option name="DEFAULT_COMPILER" value="Javac"/>  
+    <option name="CLEAR_OUTPUT_DIRECTORY" value="false"/>  
+    <!--
+    <wildcardResourcePatterns>
+      <entry name="${wildcardResourcePattern}"/>
+    </wildcardResourcePatterns>
+    -->  
+    <wildcardResourcePatterns>
+      <entry name="!?*.java"/>
+    </wildcardResourcePatterns>
+  </component>  
+  <component name="JavacSettings"> 
+    <option name="DEBUGGING_INFO" value="true"/>  
+    <option name="GENERATE_NO_WARNINGS" value="false"/>  
+    <option name="DEPRECATION" value="true"/>  
+    <option name="ADDITIONAL_OPTIONS_STRING" value=""/>  
+    <option name="MAXIMUM_HEAP_SIZE" value="128"/>  
+    <option name="USE_GENERICS_COMPILER" value="false"/> 
+  </component>  
+  <component name="JikesSettings"> 
+    <option name="DEBUGGING_INFO" value="true"/>  
+    <option name="DEPRECATION" value="true"/>  
+    <option name="GENERATE_NO_WARNINGS" value="false"/>  
+    <option name="GENERATE_MAKE_FILE_DEPENDENCIES" value="false"/>  
+    <option name="DO_FULL_DEPENDENCE_CHECK" value="false"/>  
+    <option name="IS_INCREMENTAL_MODE" value="false"/>  
+    <option name="IS_EMACS_ERRORS_MODE" value="true"/>  
+    <option name="ADDITIONAL_OPTIONS_STRING" value=""/>  
+    <option name="MAXIMUM_HEAP_SIZE" value="128"/> 
+  </component>  
+  <component name="AntConfiguration"> 
+    <option name="IS_AUTOSCROLL_TO_SOURCE" value="false"/>  
+    <option name="FILTER_TARGETS" value="false"/> 
+  </component>  
+  <component name="JavadocGenerationManager"> 
+    <option name="OUTPUT_DIRECTORY"/>  
+    <option name="OPTION_SCOPE" value="protected"/>  
+    <option name="OPTION_HIERARCHY" value="false"/>  
+    <option name="OPTION_NAVIGATOR" value="false"/>  
+    <option name="OPTION_INDEX" value="false"/>  
+    <option name="OPTION_SEPARATE_INDEX" value="false"/>  
+    <option name="OPTION_USE_1_1" value="false"/>  
+    <option name="OPTION_DOCUMENT_TAG_USE" value="false"/>  
+    <option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false"/>  
+    <option name="OPTION_DOCUMENT_TAG_VERSION" value="false"/>  
+    <option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="false"/>  
+    <option name="OPTION_DEPRECATED_LIST" value="false"/>  
+    <option name="OTHER_OPTIONS"/>  
+    <option name="HEAP_SIZE"/>  
+    <option name="OPEN_IN_BROWSER" value="false"/> 
+  </component>  
+  <component name="JUnitProjectSettings"> 
+    <option name="TEST_RUNNER" value="UI"/> 
+  </component>  
+  <component name="EntryPointsManager"> 
+    <entry_points/> 
+  </component>  
+  <component name="DataSourceManager"/>  
+  <component name="ExportToHTMLSettings"> 
+    <option name="PRINT_LINE_NUMBERS" value="false"/>  
+    <option name="OPEN_IN_BROWSER" value="false"/>  
+    <option name="OUTPUT_DIRECTORY"/> 
+  </component>  
+  <component name="ImportConfiguration"> 
+    <option name="VENDOR"/>  
+    <option name="RELEASE_TAG"/>  
+    <option name="LOG_MESSAGE"/>  
+    <option name="CHECKOUT_AFTER_IMPORT" value="true"/> 
+  </component>  
+  <component name="ProjectModuleManager"> 
+    <modules> 
+      <!-- module filepath="$$PROJECT_DIR$$/${pom.artifactId}.iml"/ -->  
+      <module filepath="$PROJECT_DIR$/insagent.iml"/>
+    </modules> 
+  </component>  
+  <UsedPathMacros> 
+    <!--<macro name="cargo"></macro>--> 
+  </UsedPathMacros> 
+</project>

+ 418 - 0
insagent.iws

@@ -0,0 +1,418 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<project version="4" relativePaths="false"> 
+  <component name="LvcsProjectConfiguration"> 
+    <option name="ADD_LABEL_ON_PROJECT_OPEN" value="true"/>  
+    <option name="ADD_LABEL_ON_PROJECT_COMPILATION" value="true"/>  
+    <option name="ADD_LABEL_ON_FILE_PACKAGE_COMPILATION" value="true"/>  
+    <option name="ADD_LABEL_ON_PROJECT_MAKE" value="true"/>  
+    <option name="ADD_LABEL_ON_RUNNING" value="true"/>  
+    <option name="ADD_LABEL_ON_DEBUGGING" value="true"/>  
+    <option name="ADD_LABEL_ON_UNIT_TEST_PASSED" value="true"/>  
+    <option name="ADD_LABEL_ON_UNIT_TEST_FAILED" value="true"/> 
+  </component>  
+  <component name="PropertiesComponent"> 
+    <property name="MemberChooser.copyJavadoc" value="false"/>  
+    <property name="GoToClass.includeLibraries" value="false"/>  
+    <property name="MemberChooser.showClasses" value="true"/>  
+    <property name="MemberChooser.sorted" value="false"/>  
+    <property name="GoToFile.includeJavaFiles" value="false"/>  
+    <property name="GoToClass.toSaveIncludeLibraries" value="false"/> 
+  </component>  
+  <component name="ToolWindowManager"> 
+    <frame x="-4" y="-4" width="1032" height="746" extended-state="6"/>  
+    <editor active="false"/>  
+    <layout> 
+      <window_info id="CVS" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="-1"/>  
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="7"/>  
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="0"/>  
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="1"/>  
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="1"/>  
+      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="-1"/>  
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.4" order="6"/>  
+      <window_info id="Aspects" active="false" anchor="right" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="-1"/>  
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="1"/>  
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="2"/>  
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="2"/>  
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.4" order="4"/>  
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="sliding" type="sliding" visible="false" weight="0.4" order="0"/>  
+      <window_info id="Web" active="false" anchor="left" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="2"/>  
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="0"/>  
+      <window_info id="EJB" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="3"/>  
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="5"/> 
+    </layout> 
+  </component>  
+  <component name="ErrorTreeViewConfiguration"> 
+    <option name="IS_AUTOSCROLL_TO_SOURCE" value="false"/>  
+    <option name="HIDE_WARNINGS" value="false"/> 
+  </component>  
+  <component name="StructureViewFactory"> 
+    <option name="SORT_MODE" value="0"/>  
+    <option name="GROUP_INHERITED" value="true"/>  
+    <option name="AUTOSCROLL_MODE" value="true"/>  
+    <option name="SHOW_FIELDS" value="true"/>  
+    <option name="AUTOSCROLL_FROM_SOURCE" value="false"/>  
+    <option name="GROUP_GETTERS_AND_SETTERS" value="true"/>  
+    <option name="SHOW_INHERITED" value="false"/>  
+    <option name="HIDE_NOT_PUBLIC" value="false"/> 
+  </component>  
+  <component name="ProjectViewSettings"> 
+    <navigator currentView="ProjectPane" flattenPackages="false" showMembers="false" showStructure="false" autoscrollToSource="false" splitterProportion="0.5"/>  
+    <view id="ProjectPane"> 
+      <expanded_node type="directory" url="file://$PROJECT_DIR$"/> 
+    </view>  
+    <view id="SourcepathPane"/>  
+    <view id="ClasspathPane"/> 
+  </component>  
+  <component name="Commander"> 
+    <leftPanel view="Project"/>  
+    <rightPanel view="Project"/>  
+    <splitter proportion="0.5"/> 
+  </component>  
+  <component name="AspectsView"/>  
+  <component name="SelectInManager"/>  
+  <component name="HierarchyBrowserManager"> 
+    <option name="SHOW_PACKAGES" value="false"/>  
+    <option name="IS_AUTOSCROLL_TO_SOURCE" value="false"/>  
+    <option name="SORT_ALPHABETICALLY" value="false"/> 
+  </component>  
+  <component name="TodoView" selected-index="0"> 
+    <todo-panel id="selected-file"> 
+      <are-packages-shown value="false"/>  
+      <flatten-packages value="false"/>  
+      <is-autoscroll-to-source value="true"/> 
+    </todo-panel>  
+    <todo-panel id="all"> 
+      <are-packages-shown value="true"/>  
+      <flatten-packages value="false"/>  
+      <is-autoscroll-to-source value="true"/> 
+    </todo-panel> 
+  </component>  
+  <component name="editorManager"/>  
+  <component name="editorHistoryManager"/>  
+  <component name="DaemonCodeAnalyzer"> 
+    <disable_hints/> 
+  </component>  
+  <component name="InspectionManager"> 
+    <option name="AUTOSCROLL_TO_SOURCE" value="false"/>  
+    <option name="SPLITTER_PROPORTION" value="0.5"/>  
+    <profile name="Default"/> 
+  </component>  
+  <component name="BookmarkManager"/>  
+  <component name="DebuggerManager"> 
+    <line_breakpoints/>  
+    <exception_breakpoints> 
+      <breakpoint_any> 
+        <option name="NOTIFY_CAUGHT" value="true"/>  
+        <option name="NOTIFY_UNCAUGHT" value="true"/>  
+        <option name="ENABLED" value="false"/>  
+        <option name="SUSPEND_VM" value="true"/>  
+        <option name="COUNT_FILTER_ENABLED" value="false"/>  
+        <option name="COUNT_FILTER" value="0"/>  
+        <option name="CONDITION_ENABLED" value="false"/>  
+        <option name="CONDITION"/>  
+        <option name="LOG_ENABLED" value="false"/>  
+        <option name="LOG_EXPRESSION_ENABLED" value="false"/>  
+        <option name="LOG_MESSAGE"/>  
+        <option name="CLASS_FILTERS_ENABLED" value="false"/>  
+        <option name="INVERSE_CLASS_FILLTERS" value="false"/>  
+        <option name="SUSPEND_POLICY" value="SuspendAll"/> 
+      </breakpoint_any> 
+    </exception_breakpoints>  
+    <field_breakpoints/>  
+    <method_breakpoints/> 
+  </component>  
+  <component name="DebuggerSettings"> 
+    <option name="TRACING_FILTERS_ENABLED" value="true"/>  
+    <option name="TOSTRING_CLASSES_ENABLED" value="false"/>  
+    <option name="VALUE_LOOKUP_DELAY" value="700"/>  
+    <option name="DEBUGGER_TRANSPORT" value="0"/>  
+    <option name="FORCE_CLASSIC_VM" value="true"/>  
+    <option name="HIDE_DEBUGGER_ON_PROCESS_TERMINATION" value="false"/>  
+    <option name="SKIP_SYNTHETIC_METHODS" value="true"/>  
+    <option name="SKIP_CONSTRUCTORS" value="false"/>  
+    <option name="STEP_THREAD_SUSPEND_POLICY" value="SuspendThread"/>  
+    <default_breakpoint_settings> 
+      <option name="NOTIFY_CAUGHT" value="true"/>  
+      <option name="NOTIFY_UNCAUGHT" value="true"/>  
+      <option name="WATCH_MODIFICATION" value="true"/>  
+      <option name="WATCH_ACCESS" value="true"/>  
+      <option name="WATCH_ENTRY" value="true"/>  
+      <option name="WATCH_EXIT" value="true"/>  
+      <option name="ENABLED" value="true"/>  
+      <option name="SUSPEND_VM" value="true"/>  
+      <option name="COUNT_FILTER_ENABLED" value="false"/>  
+      <option name="COUNT_FILTER" value="0"/>  
+      <option name="CONDITION_ENABLED" value="false"/>  
+      <option name="CONDITION"/>  
+      <option name="LOG_ENABLED" value="false"/>  
+      <option name="LOG_EXPRESSION_ENABLED" value="false"/>  
+      <option name="LOG_MESSAGE"/>  
+      <option name="CLASS_FILTERS_ENABLED" value="false"/>  
+      <option name="INVERSE_CLASS_FILLTERS" value="false"/>  
+      <option name="SUSPEND_POLICY" value="SuspendAll"/> 
+    </default_breakpoint_settings>  
+    <filter> 
+      <option name="PATTERN" value="com.sun.*"/>  
+      <option name="ENABLED" value="true"/> 
+    </filter>  
+    <filter> 
+      <option name="PATTERN" value="java.*"/>  
+      <option name="ENABLED" value="true"/> 
+    </filter>  
+    <filter> 
+      <option name="PATTERN" value="javax.*"/>  
+      <option name="ENABLED" value="true"/> 
+    </filter>  
+    <filter> 
+      <option name="PATTERN" value="org.omg.*"/>  
+      <option name="ENABLED" value="true"/> 
+    </filter>  
+    <filter> 
+      <option name="PATTERN" value="sun.*"/>  
+      <option name="ENABLED" value="true"/> 
+    </filter>  
+    <filter> 
+      <option name="PATTERN" value="junit.*"/>  
+      <option name="ENABLED" value="true"/> 
+    </filter> 
+  </component>  
+  <component name="CompilerWorkspaceConfiguration"> 
+    <option name="COMPILE_IN_BACKGROUND" value="false"/>  
+    <option name="AUTO_SHOW_ERRORS_IN_EDITOR" value="true"/> 
+  </component>  
+  <component name="RunManager"> 
+    <activeType name="Application"/>  
+    <configuration selected="false" default="true" type="Applet" factoryName="Applet"> 
+      <module name=""/>  
+      <option name="MAIN_CLASS_NAME"/>  
+      <option name="HTML_FILE_NAME"/>  
+      <option name="HTML_USED" value="false"/>  
+      <option name="WIDTH" value="400"/>  
+      <option name="HEIGHT" value="300"/>  
+      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy"/>  
+      <option name="VM_PARAMETERS"/> 
+    </configuration>  
+    <configuration selected="false" default="true" type="Remote" factoryName="Remote"> 
+      <option name="USE_SOCKET_TRANSPORT" value="true"/>  
+      <option name="SERVER_MODE" value="false"/>  
+      <option name="SHMEM_ADDRESS" value="javadebug"/>  
+      <option name="HOST" value="localhost"/>  
+      <option name="PORT" value="5005"/> 
+    </configuration>  
+    <configuration selected="false" default="true" type="Application" factoryName="Application"> 
+      <option name="MAIN_CLASS_NAME"/>  
+      <option name="VM_PARAMETERS"/>  
+      <option name="PROGRAM_PARAMETERS"/>  
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$"/>  
+      <module name=""/> 
+    </configuration>  
+    <configuration selected="false" default="true" type="JUnit" factoryName="JUnit"> 
+      <module name=""/>  
+      <option name="PACKAGE_NAME"/>  
+      <option name="MAIN_CLASS_NAME"/>  
+      <option name="METHOD_NAME"/>  
+      <option name="TEST_OBJECT" value="class"/>  
+      <option name="VM_PARAMETERS"/>  
+      <option name="PARAMETERS"/>  
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$"/>  
+      <option name="ADDITIONAL_CLASS_PATH"/>  
+      <option name="TEST_SEARCH_SCOPE"> 
+        <value defaultName="wholeProject"/> 
+      </option> 
+    </configuration> 
+  </component>  
+  <component name="VcsManagerConfiguration"> 
+    <option name="ACTIVE_VCS_NAME" value=""/>  
+    <option name="STATE" value="0"/> 
+  </component>  
+  <component name="VssConfiguration"> 
+    <CheckoutOptions> 
+      <option name="COMMENT" value=""/>  
+      <option name="DO_NOT_GET_LATEST_VERSION" value="false"/>  
+      <option name="REPLACE_WRITABLE" value="false"/>  
+      <option name="RECURSIVE" value="false"/> 
+    </CheckoutOptions>  
+    <CheckinOptions> 
+      <option name="COMMENT" value=""/>  
+      <option name="KEEP_CHECKED_OUT" value="false"/>  
+      <option name="RECURSIVE" value="false"/> 
+    </CheckinOptions>  
+    <AddOptions> 
+      <option name="COMMENT" value=""/>  
+      <option name="STORE_ONLY_LATEST_VERSION" value="false"/>  
+      <option name="CHECK_OUT_IMMEDIATELY" value="false"/>  
+      <option name="FILE_TYPE" value="0"/> 
+    </AddOptions>  
+    <UndocheckoutOptions> 
+      <option name="MAKE_WRITABLE" value="false"/>  
+      <option name="REPLACE_LOCAL_COPY" value="0"/>  
+      <option name="RECURSIVE" value="false"/> 
+    </UndocheckoutOptions>  
+    <DiffOptions> 
+      <option name="IGNORE_WHITE_SPACE" value="false"/>  
+      <option name="IGNORE_CASE" value="false"/> 
+    </DiffOptions>  
+    <GetOptions> 
+      <option name="REPLACE_WRITABLE" value="0"/>  
+      <option name="MAKE_WRITABLE" value="false"/>  
+      <option name="RECURSIVE" value="false"/> 
+    </GetOptions>  
+    <option name="CLIENT_PATH" value=""/>  
+    <option name="SRCSAFEINI_PATH" value=""/>  
+    <option name="USER_NAME" value=""/>  
+    <option name="PWD" value=""/>  
+    <option name="SHOW_CHECKOUT_OPTIONS" value="true"/>  
+    <option name="SHOW_ADD_OPTIONS" value="true"/>  
+    <option name="SHOW_UNDOCHECKOUT_OPTIONS" value="true"/>  
+    <option name="SHOW_DIFF_OPTIONS" value="true"/>  
+    <option name="SHOW_GET_OPTIONS" value="true"/>  
+    <option name="USE_EXTERNAL_DIFF" value="false"/>  
+    <option name="EXTERNAL_DIFF_PATH" value=""/>  
+    <option name="REUSE_LAST_COMMENT" value="false"/>  
+    <option name="PUT_FOCUS_INTO_COMMENT" value="false"/>  
+    <option name="SHOW_CHECKIN_OPTIONS" value="true"/>  
+    <option name="LAST_COMMIT_MESSAGE" value=""/>  
+    <option name="CHECKIN_DIALOG_SPLITTER_PROPORTION" value="0.8"/> 
+  </component>  
+  <component name="CheckinPanelState"/>  
+  <component name="WebViewSettings"> 
+    <webview flattenPackages="false" showMembers="false" autoscrollToSource="false"/> 
+  </component>  
+  <component name="EjbViewSettings"> 
+    <EjbView showMembers="false" autoscrollToSource="false"/> 
+  </component>  
+  <component name="AppServerRunManager"/>  
+  <component name="StarteamConfiguration"> 
+    <option name="SERVER" value=""/>  
+    <option name="PORT" value="49201"/>  
+    <option name="USER" value=""/>  
+    <option name="PASSWORD" value=""/>  
+    <option name="PROJECT" value=""/>  
+    <option name="VIEW" value=""/>  
+    <option name="ALTERNATIVE_WORKING_PATH" value=""/>  
+    <option name="PUT_FOCUS_INTO_COMMENT" value="false"/>  
+    <option name="SHOW_CHECKIN_OPTIONS" value="true"/>  
+    <option name="LAST_COMMIT_MESSAGE" value=""/>  
+    <option name="CHECKIN_DIALOG_SPLITTER_PROPORTION" value="0.8"/> 
+  </component>  
+  <component name="Cvs2Configuration"> 
+    <option name="ON_FILE_ADDING" value="0"/>  
+    <option name="ON_FILE_REMOVING" value="0"/>  
+    <option name="PRUNE_EMPTY_DIRECTORIES" value="true"/>  
+    <option name="SHOW_UPDATE_OPTIONS" value="true"/>  
+    <option name="SHOW_ADD_OPTIONS" value="true"/>  
+    <option name="SHOW_REMOVE_OPTIONS" value="true"/>  
+    <option name="MERGING_MODE" value="0"/>  
+    <option name="MERGE_WITH_BRANCH1_NAME" value="HEAD"/>  
+    <option name="MERGE_WITH_BRANCH2_NAME" value="HEAD"/>  
+    <option name="RESET_STICKY" value="false"/>  
+    <option name="CREATE_NEW_DIRECTORIES" value="true"/>  
+    <option name="DEFAULT_TEXT_FILE_SUBSTITUTION" value="kv"/>  
+    <option name="PROCESS_UNKNOWN_FILES" value="false"/>  
+    <option name="PROCESS_DELETED_FILES" value="false"/>  
+    <option name="SHOW_EDIT_DIALOG" value="true"/>  
+    <option name="RESERVED_EDIT" value="false"/>  
+    <option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6"/>  
+    <option name="SHOW_CHECKOUT_OPTIONS" value="true"/>  
+    <option name="CHECKOUT_DATE_OR_REVISION_SETTINGS"> 
+      <value> 
+        <option name="BRANCH" value=""/>  
+        <option name="DATE" value=""/>  
+        <option name="USE_BRANCH" value="false"/>  
+        <option name="USE_DATE" value="false"/> 
+      </value> 
+    </option>  
+    <option name="UPDATE_DATE_OR_REVISION_SETTINGS"> 
+      <value> 
+        <option name="BRANCH" value=""/>  
+        <option name="DATE" value=""/>  
+        <option name="USE_BRANCH" value="false"/>  
+        <option name="USE_DATE" value="false"/> 
+      </value> 
+    </option>  
+    <option name="SHOW_CHANGES_REVISION_SETTINGS"> 
+      <value> 
+        <option name="BRANCH" value=""/>  
+        <option name="DATE" value=""/>  
+        <option name="USE_BRANCH" value="false"/>  
+        <option name="USE_DATE" value="false"/> 
+      </value> 
+    </option>  
+    <option name="SHOW_OUTPUT" value="false"/>  
+    <option name="SHOW_FILE_HISTORY_AS_TREE" value="false"/>  
+    <option name="UPDATE_GROUP_BY_PACKAGES" value="false"/>  
+    <option name="ADD_WATCH_INDEX" value="0"/>  
+    <option name="REMOVE_WATCH_INDEX" value="0"/>  
+    <option name="UPDATE_KEYWORD_SUBSTITUTION"/>  
+    <option name="MAKE_NEW_FILES_READONLY" value="false"/>  
+    <option name="SHOW_CORRUPTED_PROJECT_FILES" value="0"/>  
+    <option name="TAG_AFTER_FILE_COMMIT" value="false"/>  
+    <option name="TAG_AFTER_FILE_COMMIT_NAME" value=""/>  
+    <option name="TAG_AFTER_PROJECT_COMMIT" value="false"/>  
+    <option name="TAG_AFTER_PROJECT_COMMIT_NAME" value=""/>  
+    <option name="PUT_FOCUS_INTO_COMMENT" value="false"/>  
+    <option name="SHOW_CHECKIN_OPTIONS" value="true"/>  
+    <option name="FORCE_NON_EMPTY_COMMENT" value="false"/>  
+    <option name="LAST_COMMIT_MESSAGE" value=""/>  
+    <option name="SAVE_LAST_COMMIT_MESSAGE" value="true"/>  
+    <option name="CHECKIN_DIALOG_SPLITTER_PROPORTION" value="0.8"/>  
+    <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false"/>  
+    <option name="OPTIMIZE_IMPORTS_BEFORE_FILE_COMMIT" value="false"/>  
+    <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false"/>  
+    <option name="REFORMAT_BEFORE_FILE_COMMIT" value="false"/>  
+    <option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8"/>  
+    <option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5"/> 
+  </component>  
+  <component name="CvsTabbedWindow"/>  
+  <component name="SvnConfiguration"> 
+    <option name="USER" value=""/>  
+    <option name="PASSWORD" value=""/>  
+    <option name="AUTO_ADD_FILES" value="0"/>  
+    <option name="AUTO_DEL_FILES" value="0"/> 
+  </component>  
+  <component name="PerforceConfiguration"> 
+    <option name="PORT" value="magic:1666"/>  
+    <option name="USER" value=""/>  
+    <option name="PASSWORD" value=""/>  
+    <option name="CLIENT" value=""/>  
+    <option name="TRACE" value="false"/>  
+    <option name="PERFORCE_STATUS" value="true"/>  
+    <option name="CHANGELIST_OPTION" value="false"/>  
+    <option name="SYSTEMROOT" value=""/>  
+    <option name="P4_EXECUTABLE" value="p4"/>  
+    <option name="SHOW_BRANCH_HISTORY" value="false"/>  
+    <option name="GENERATE_COMMENT" value="false"/>  
+    <option name="SYNC_OPTION" value="Sync"/>  
+    <option name="PUT_FOCUS_INTO_COMMENT" value="false"/>  
+    <option name="SHOW_CHECKIN_OPTIONS" value="true"/>  
+    <option name="FORCE_NON_EMPTY_COMMENT" value="true"/>  
+    <option name="LAST_COMMIT_MESSAGE" value=""/>  
+    <option name="SAVE_LAST_COMMIT_MESSAGE" value="true"/>  
+    <option name="CHECKIN_DIALOG_SPLITTER_PROPORTION" value="0.8"/>  
+    <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false"/>  
+    <option name="OPTIMIZE_IMPORTS_BEFORE_FILE_COMMIT" value="false"/>  
+    <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false"/>  
+    <option name="REFORMAT_BEFORE_FILE_COMMIT" value="false"/>  
+    <option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8"/>  
+    <option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5"/> 
+  </component> 
+</project>

+ 2 - 1
src/main/java/com/ydtech/modules/fnc/controller/CarSettleController.java

@@ -145,7 +145,8 @@ public class CarSettleController extends BaseController {
                 e.printStackTrace();
                 return HttpResult.error("系统异常");
             }
-
+            //异步处理推送用工账务平台发放服务
+            insFeeAuditService.sendProject(insOrderNo);
             return HttpResult.ok("审核成功");
         } else {
             return HttpResult.error("订单号有误-未承保");

+ 1 - 0
src/main/java/com/ydtech/modules/fnc/service/InsFeeAuditService.java

@@ -44,5 +44,6 @@ public interface InsFeeAuditService extends IService<InsFeeAudit> {
       */
      InsFeeAudit getFeeAuditByInsOrderNo(String insOrderNo);
 
+     void sendProject(String insOrderNo);
 
 }

+ 208 - 3
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -2,12 +2,17 @@ package com.ydtech.modules.fnc.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.constants.enums.dict.FeeAuditAuditstatus;
 import com.ydtech.constants.enums.dict.ins.InsFeeAuditDistributionStatusEnum;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.SysDept;
+import com.ydtech.modules.admin.model.SysDeptAccount;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.SysUserRole;
 import com.ydtech.modules.admin.dao.SysPartnerAccountMapper;
 import com.ydtech.modules.admin.dao.SysPremiumDetailsMapper;
 import com.ydtech.modules.admin.model.*;
@@ -16,6 +21,7 @@ import com.ydtech.modules.admin.model.po.SysUserAccount;
 import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
 import com.ydtech.modules.admin.service.*;
 import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.esm.model.EsmUserReferrer;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
 import com.ydtech.modules.fnc.dao.FncInsAreaCompanyMapper;
 import com.ydtech.modules.fnc.dao.InsFeeAuditMapper;
@@ -33,18 +39,26 @@ import com.ydtech.modules.ins.model.InsDeptFee;
 import com.ydtech.modules.ins.service.InsCommissionService;
 import com.ydtech.modules.ins.service.InsCompanyFeeService;
 import com.ydtech.modules.ins.service.InsDeptFeeService;
+import com.ydtech.modules.order.constants.BusinessConstant;
 import com.ydtech.modules.order.dao.InsOrdersMapper;
 import com.ydtech.modules.order.entity.InsFeeOrder;
 import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
+import com.ydtech.modules.order.entity.vo.OrderVo;
+import com.ydtech.modules.order.entity.vo.sendProject.SendProjectInfo;
 import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNewDistribution;
 import com.ydtech.modules.protocols.service.InsFeeOrderNewDistributionService;
 import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
+import com.ydtech.modules.sendProject.dao.SendProjectMapper;
+import com.ydtech.modules.sendProject.entity.SendProjectEntity;
 import com.ydtech.utils.DateUtil;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.idgen.IdGenerate;
+import com.ydtech.utils.sendProjectUtils.SendProjrctUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.redisson.Redisson;
 import org.redisson.api.RLock;
@@ -55,10 +69,11 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -70,6 +85,7 @@ import java.util.concurrent.TimeUnit;
  * @since 2023-11-22
  */
 @Service
+@Slf4j
 public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFeeAudit> implements InsFeeAuditService {
 
     private final InsOrdersMapper insOrdersMapper;
@@ -126,6 +142,22 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
     @Resource
     private InsFeeOrderNewDistributionService insFeeOrderNewDistributionService;
 
+    @Autowired
+    private SendProjrctUtils sendProjrctUtils;
+
+    @Autowired
+    private SysUserRoleService sysUserRoleService;
+
+    @Autowired
+    private SendProjectMapper sendProjectMapper;
+
+    private ExecutorService executorService= Executors.newCachedThreadPool();
+
+    private static final String STRING_0 = "0";
+    private static final String STRING_1 = "1";
+    private static final String STRING_2 = "2";
+    private static final Integer INTEGER_0 = 0;
+
 
     public InsFeeAuditServiceImpl(FncInsAreaCompanyMapper insAreaCompanyMapper, InsOrdersMapper insOrdersMapper,
                                   InsDeptFeeService insDeptFeeService, EsmUserReferrerService esmUserReferrerService,
@@ -947,5 +979,178 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         return this.getOne(queryWrapper);
     }
 
+    @Override
+    public void sendProject(String insOrderNo) {
+        log.info("订单:{},审核通过后首次推送服务", insOrderNo);
+        executorService.submit(new Runnable() {
+            @Override
+            public void run() {
+                log.info("异步线程开始!程序启动时间:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
+                SendProjectInfo sendProjectInfo = new SendProjectInfo();
+                //查询归属信息
+                OrderVo orderAndAreaCompany = new OrderVo();
+                EsmUserReferrer esmUserReferrer = new EsmUserReferrer();
+                try {
+                    log.info("查询ins_orders数据库入参:{}", insOrderNo);
+                    orderAndAreaCompany = insOrdersMapper.getOrderAndAreaCompany(insOrderNo);
+                    log.info("查询ins_orders数据库出参:{}", JSON.toJSON(orderAndAreaCompany));
+                    log.info("查询esm_user_referrer数据库入参:{}", orderAndAreaCompany.getUserid());
+                    esmUserReferrer = esmUserReferrerService.getById(orderAndAreaCompany.getUserid());
+                    log.info("查询esm_user_referrer数据库出参:{}", JSON.toJSON(esmUserReferrer));
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    log.error("查询ins_orders/esm_user_referrer数据库报错:{}", e.getMessage());
+                }
+                if (esmUserReferrer != null) {
+                    sendProjectInfo.setReferrerNo(esmUserReferrer.getReferrerId());
+                }
+                if (orderAndAreaCompany != null) {
+                    sendProjectInfo.setUserId(orderAndAreaCompany.getUserid());
+                }
+                //查询费用信息
+                log.info("查询ins_fee_order_new数据库");
+                InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getOne(new LambdaQueryWrapper<InsFeeOrderNew>()
+                        .eq(InsFeeOrderNew::getInsOrderNo, insOrderNo));
+                log.info("查询ins_fee_order_new数据库出参:{}", JSON.toJSON(insFeeOrderNew));
+                FeeOrderNewVo.ExportFee exportFee = exportFee(insFeeOrderNew);
+                BigDecimal totalAmount = exportFee.getTotalAmount();
+
+                StringBuffer uuid = new StringBuffer();
+                uuid.append(new SimpleDateFormat("yyyyMMddHHmmss"))
+                        .append(UUID.randomUUID());
+
+                SendProjectInfo userInfo = new SendProjectInfo();
+                try {
+                    log.info("查询数据库保险订单表入参:{}", insOrderNo);
+                    userInfo = insOrdersMapper.getOrderByCompanyId(insOrderNo);
+                    log.info("查询数据库保险订单表出参:{}", JSON.toJSON(userInfo));
+                } catch (Exception e) {
+                    log.error("查询数据库保险订单表报错:{}", e.getMessage());
+                }
+
+                if (userInfo == null) {
+                    return;
+                }
+
+                sendProjectInfo.setGiveBudget(totalAmount);
+                sendProjectInfo.setUuid(uuid.toString());
+                sendProjectInfo.setUserName(userInfo.getUserName());
+                sendProjectInfo.setUserPhone(userInfo.getUserPhone());
+                sendProjectInfo.setUserCarNum(userInfo.getUserCarNum());
+
+                SendProjectEntity addSendProject = new SendProjectEntity();
+                addSendProject.setTotalAmount(sendProjectInfo.getGiveBudget());
+                addSendProject.setUserName(sendProjectInfo.getUserName());
+                addSendProject.setUserCarNum(sendProjectInfo.getUserCarNum());
+                addSendProject.setUserPhone(sendProjectInfo.getUserPhone());
+                addSendProject.setSendState(STRING_2);
+                addSendProject.setSendUuid(sendProjectInfo.getSendUuid());
+                addSendProject.setUserId(sendProjectInfo.getUserId());
+                addSendProject.setReferrerNo(sendProjectInfo.getReferrerNo());
+                addSendProject.setFailNum(INTEGER_0);
+                addSendProject.setState(STRING_1);
+                addSendProject.setIsDelete(STRING_0);
+                addSendProject.setCreateTime(new Date());
+                addSendProject.setUpdateTime(new Date());
+                try {
+                    log.info("新增推送服务数据库入参:{}", JSON.toJSON(addSendProject));
+                    sendProjectMapper.addSendProjectInfo(addSendProject);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    log.error("新增推送服务数据库报错:{}", e.getMessage());
+                }
+                sendProjrctUtils.firstSendProject(sendProjectInfo);
+            }
+        });
+    }
+
+    private FeeOrderNewVo.ExportFee exportFee(InsFeeOrderNew insFeeOrderNew) {
+        List<FeeOrderNewVo.ExportFee> exportFeeList = new ArrayList<>();
+        //region 出口费用
+        //交强
+        FeeOrderNewVo.ExportFee jqExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_1,
+                insFeeOrderNew.getJqPremium(), insFeeOrderNew.getJqCostsExportProportion(),
+                insFeeOrderNew.getJqExportOtherCostsProportion(),
+                insFeeOrderNew.getJqExportSuperviseCostsPremiums(), insFeeOrderNew.getJqExportOtherCostsPremiums()
+        );
+        //exportFeeList.add(jqExportFee);
+
+        //交强
+        FeeOrderNewVo.ExportFee syExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_2,
+                insFeeOrderNew.getSyPremium(), insFeeOrderNew.getSyCostsExportProportion(),
+                insFeeOrderNew.getSyExportOtherCostsProportion(),
+                insFeeOrderNew.getSyExportSuperviseCostsPremiums(), insFeeOrderNew.getSyExportOtherCostsPremiums()
+        );
+        //exportFeeList.add(syExportFee);
+
+        //交强
+        FeeOrderNewVo.ExportFee noExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_3,
+                insFeeOrderNew.getNoPremium(), insFeeOrderNew.getNoCostsExportProportion(),
+                insFeeOrderNew.getNoExportOtherCostsProportion(),
+                insFeeOrderNew.getNoExportSuperviseCostsPremiums(), insFeeOrderNew.getNoExportOtherCostsPremiums());
+
+        // exportFeeList.add(noExportFee);
+        //add  by  hxl   添加出单员不能查看优惠的限制    2024-07-11
+        String userId = BaseController.getUserId();
+        SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
+        if (sysUserRole != null && sysUserRole.getRoleId() == 19) {
+            jqExportFee.setTotalAmount(BigDecimal.ZERO);
+            jqExportFee.setTotalProportion(BigDecimal.ZERO);
+            syExportFee.setTotalAmount(BigDecimal.ZERO);
+            syExportFee.setTotalProportion(BigDecimal.ZERO);
+            noExportFee.setTotalAmount(BigDecimal.ZERO);
+            noExportFee.setTotalProportion(BigDecimal.ZERO);
+        }
+        exportFeeList.add(jqExportFee);
+        exportFeeList.add(syExportFee);
+        exportFeeList.add(noExportFee);
+        //出口费用合计
+        FeeOrderNewVo.ExportFee exportFeeTotal = assignExportFeeTotal(exportFeeList);
+        return exportFeeTotal;
+    }
+
+    private FeeOrderNewVo.ExportFee assignExportFeeTotal(List<FeeOrderNewVo.ExportFee> exportFeeList) {
+        FeeOrderNewVo.ExportFee exportFee = new FeeOrderNewVo.ExportFee();
+        exportFee.setInsuranceType(BusinessConstant.FEE_INSURANCE_TYPE_4);
+        //总费用合计
+        BigDecimal totalAmount = exportFeeList.stream().map(FeeOrderNewVo.ExportFee::getTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+        exportFee.setTotalAmount(Optional.of(totalAmount).orElse(BigDecimal.ZERO));
+        return exportFee;
+    }
+
+    /**
+     * 出口费用赋值
+     *
+     * @param title
+     * @param premium
+     * @param superviseCostsProportion
+     * @param otherCostsProportion
+     * @param superviseCostsPremiums
+     * @param otherCostsPremiums
+     * @return
+     */
+    public FeeOrderNewVo.ExportFee assignExportFee(String title, BigDecimal premium, BigDecimal superviseCostsProportion,
+                                                   BigDecimal otherCostsProportion,
+                                                   BigDecimal superviseCostsPremiums, BigDecimal otherCostsPremiums
+    ) {
+        FeeOrderNewVo.ExportFee exportFee = new FeeOrderNewVo.ExportFee();
+        exportFee.setInsuranceType(title);
+        //保费
+        exportFee.setPremium(premium);
+        //手续费比例
+        exportFee.setSuperviseCosts(superviseCostsProportion);
+        //跟单比例
+        exportFee.setOtherCostsProportion(otherCostsProportion);
+        //总比例
+        exportFee.setTotalProportion(superviseCostsProportion.add(otherCostsProportion));
+        //手续费
+        exportFee.setSuperviseCostsPremiums(superviseCostsPremiums);
+        //跟单费
+        exportFee.setOtherCostsPremiums(otherCostsPremiums);
+        //总费用
+        exportFee.setTotalAmount(superviseCostsPremiums.add(otherCostsPremiums));
+
+        return exportFee;
+    }
 
 }

+ 6 - 0
src/main/java/com/ydtech/modules/order/dao/InsOrdersMapper.java

@@ -7,6 +7,7 @@ import com.ydtech.modules.ins.model.InsOrdersExcelVo;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.dto.TelemarketingAuditOrderDTO;
 import com.ydtech.modules.order.entity.vo.*;
+import com.ydtech.modules.order.entity.vo.sendProject.SendProjectInfo;
 import com.ydtech.modules.order.entity.vo.telemarketing.TelemarketingAuditOrderQueryVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -150,4 +151,9 @@ public interface InsOrdersMapper extends BaseMapper<InsOrders> {
      * @return 被保人列表
      */
     List<String> queryInsured(@Param("queryInsuredInOrderVo") QueryLicenseInOrderVo queryInsuredInOrderVo, String userId);
+
+    /**
+     * 推送服务查询客户信息
+     */
+    SendProjectInfo getOrderByCompanyId(@Param("companyId")String companyId);
 }

+ 47 - 0
src/main/java/com/ydtech/modules/order/entity/vo/sendProject/SendProjectInfo.java

@@ -0,0 +1,47 @@
+package com.ydtech.modules.order.entity.vo.sendProject;
+
+import com.ydtech.modules.sendProject.entity.SendProjectEntity;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class SendProjectInfo extends SendProjectEntity implements Serializable {
+
+    private static final long serialVersionUID = 4878818074979842364L;
+
+    /** 发放预算 */
+    private BigDecimal giveBudget;
+
+    /**
+     * 推送uuid
+     */
+    private String uuid;
+
+    /**
+     * 用户姓名
+     */
+    private String userName;
+
+    /**
+     * 用户车牌号
+     */
+    private String userCarNum;
+
+    /**
+     * 用户电话号
+     */
+    private String userPhone;
+
+    /**
+     * 推荐人工号
+     */
+    private String referrerNo;
+
+    /**
+     * 归属人工号
+     */
+    private String userId;
+
+}

+ 15 - 0
src/main/java/com/ydtech/modules/sendProject/dao/SendProjectMapper.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.sendProject.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.sendProject.entity.SendProjectEntity;
+
+import java.util.List;
+
+public interface SendProjectMapper extends BaseMapper<SendProjectEntity> {
+
+    void addSendProjectInfo(SendProjectEntity sendProjectEntity);
+
+    void updateSendProjectInfo(SendProjectEntity sendProjectEntity);
+
+    List<SendProjectEntity> getSendFailInfo();
+}

+ 115 - 0
src/main/java/com/ydtech/modules/sendProject/entity/SendProjectEntity.java

@@ -0,0 +1,115 @@
+package com.ydtech.modules.sendProject.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@TableName("send_project_history")
+@Data
+@ToString
+@EqualsAndHashCode
+@AllArgsConstructor
+@NoArgsConstructor
+public class SendProjectEntity implements Serializable {
+
+    private static final long serialVersionUID = -6917312238129061700L;
+
+    @ApiModelProperty("主键")
+    @TableId(value = "id")
+    private Integer id;
+
+    @ApiModelProperty("post请求")
+    @TableField(value = "http_post")
+    private String httpPost;
+
+    @ApiModelProperty("出口费用总金额/发放预算")
+    @TableField(value = "total_amount")
+    private BigDecimal totalAmount;
+
+    @ApiModelProperty("用户姓名")
+    @TableField(value = "user_name")
+    private String userName;
+
+    @ApiModelProperty("用户车牌号")
+    @TableField(value = "user_car_num")
+    private String userCarNum;
+
+    @ApiModelProperty("用户手机号")
+    @TableField(value = "user_phone")
+    private String userPhone;
+
+    /**
+     * sendState=9 为报错信息  sendState=0 为推送失败信息
+     */
+    @ApiModelProperty("请求响应")
+    @TableField(value = "http_response")
+    private String httpResponse;
+
+    /**
+     * 推送状态 0-推送失败 1-推送成功 2-推送中 9-未知
+     */
+    @ApiModelProperty("推送状态")
+    @TableField(value = "send_state")
+    private String sendState;
+
+    @ApiModelProperty("唯一编码")
+    @TableField(value = "send_uuid")
+    private String sendUuid;
+
+    @ApiModelProperty("失败次数")
+    @TableField(value = "fail_num")
+    private Integer failNum;
+
+    @ApiModelProperty("推荐人工号")
+    @TableField(value = "referrer_no")
+    private String referrerNo;
+
+    @ApiModelProperty("归属人工号")
+    @TableField(value = "user_id")
+    private String userId;
+
+    /**
+     * 数据是否有效 0-否 1-是
+     */
+    @ApiModelProperty("数据是否有效")
+    @TableField(value = "state")
+    private String state;
+
+    /**
+     * 数据是否删除 0-否 1-是
+     */
+    @ApiModelProperty("数据是否删除")
+    @TableField(value = "is_delete")
+    private String isDelete;
+
+    @ApiModelProperty("创建者")
+    @TableField(fill = FieldFill.INSERT)
+    private String createBy;
+
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    @ApiModelProperty("修改者")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateBy;
+
+    @ApiModelProperty("修改时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    @ApiModelProperty("备注")
+    @TableField(value = "remark")
+    private String remark;
+
+}

+ 56 - 0
src/main/java/com/ydtech/utils/sendProjectUtils/SendProjectRetryUtils.java

@@ -0,0 +1,56 @@
+package com.ydtech.utils.sendProjectUtils;
+
+import com.alibaba.fastjson.JSON;
+import com.ydtech.modules.order.entity.vo.sendProject.SendProjectInfo;
+import com.ydtech.modules.sendProject.dao.SendProjectMapper;
+import com.ydtech.modules.sendProject.entity.SendProjectEntity;
+import com.ydtech.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@Component
+public class SendProjectRetryUtils {
+
+    @Autowired
+    private SendProjectMapper sendProjectMapper;
+
+    @Autowired
+    private SendProjrctUtils sendProjrctUtils;
+
+    @Scheduled(cron = "0 */1 * * * ?")
+    private void sendProjectRetry() {
+        log.info("推送服务补偿启动,启动时间:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
+        List<SendProjectEntity> sendFailInfo = new ArrayList<SendProjectEntity>();
+        try {
+            sendFailInfo = sendProjectMapper.getSendFailInfo();
+            log.info("查询send_project_history数据库出参:{}", JSON.toJSON(sendFailInfo));
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("查询send_project_history数据库报错:{}", e.getMessage());
+        }
+        if (sendFailInfo != null && !sendFailInfo.isEmpty()) {
+            for (SendProjectEntity sendProjectEntity : sendFailInfo) {
+                if (sendProjectEntity == null && StringUtils.isNullOrEmpty(sendProjectEntity)) {
+                    continue;
+                }
+                if (sendProjectEntity.getFailNum() != null && sendProjectEntity.getFailNum() < 3) {
+                    SendProjectInfo sendProjectInfo = new SendProjectInfo();
+                    sendProjectInfo.setGiveBudget(sendProjectEntity.getTotalAmount());
+                    sendProjectInfo.setUserName(sendProjectEntity.getUserName());
+                    sendProjectInfo.setUserPhone(sendProjectEntity.getUserPhone());
+                    sendProjectInfo.setUserCarNum(sendProjectEntity.getUserCarNum());
+                    sendProjectInfo.setUuid(sendProjectEntity.getSendUuid());
+                    sendProjectInfo.setFailNum(sendProjectEntity.getFailNum());
+                    sendProjrctUtils.sendProjectRetry(sendProjectInfo);
+                }
+            }
+        }
+    }
+}

+ 178 - 0
src/main/java/com/ydtech/utils/sendProjectUtils/SendProjrctUtils.java

@@ -0,0 +1,178 @@
+package com.ydtech.utils.sendProjectUtils;
+
+import com.alibaba.fastjson.JSON;
+import com.ydtech.modules.order.entity.vo.sendProject.SendProjectInfo;
+import com.ydtech.modules.sendProject.dao.SendProjectMapper;
+import com.ydtech.modules.sendProject.entity.SendProjectEntity;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpEntity;
+import org.apache.http.ParseException;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@Component
+public class SendProjrctUtils {
+
+    @Autowired
+    private SendProjectMapper sendProjectMapper;
+
+    private static final String STRING_0 = "0";
+    private static final String STRING_1 = "1";
+    private static final String STRING_9 = "9";
+    private static final String RESPONSE_SUCCESS = "200";
+
+    public Map<String, String> sendProject(SendProjectInfo sendProjectInfo)
+            throws ClientProtocolException,ParseException, IOException {
+
+        // 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
+        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
+
+        // 创建Post请求
+        HttpPost httpPost = new HttpPost("http://localhost:8080/system/record");
+        // 我这里利用阿里的fastjson,将Object转换为json字符串;
+        // (需要导入com.alibaba.fastjson.JSON包)
+        String jsonString = JSON.toJSONString(sendProjectInfo);
+
+        StringEntity entity = new StringEntity(jsonString, "UTF-8");
+
+        // post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中
+        httpPost.setEntity(entity);
+        httpPost.setHeader("Content-Type", "application/json;charset=utf8");
+        httpPost.setHeader("cookie","username=admin; rememberMe=true; password=Zku924Y4c8N3a0XdUwMAG1gFwJMUiXz4//XRNxbTf+1FVZFtGDCQf4cKmT1wAjMLvjcSlsYDGRD+vGUOM5PM1g==; Admin-Token=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImFkMjIzZTNkLTU2OWUtNGMwNS1iOTk3LTA2MzVjNDBkZjNmNSJ9.cPTCVW17qiUxtpZsMvS8exY7lZb5nrYkAJUliA6gVwOk0-D4u0gJI5CS6rCvIdmeRlsvR56WvRi_cpRNJXqlQw");
+        httpPost.setHeader("authorization","Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImFkMjIzZTNkLTU2OWUtNGMwNS1iOTk3LTA2MzVjNDBkZjNmNSJ9.cPTCVW17qiUxtpZsMvS8exY7lZb5nrYkAJUliA6gVwOk0-D4u0gJI5CS6rCvIdmeRlsvR56WvRi_cpRNJXqlQw");
+        sendProjectInfo.setHttpPost(httpPost.toString());
+
+        // 响应模型
+        CloseableHttpResponse response = null;
+        String responseCode = new String();
+
+        // 由客户端执行(发送)Post请求
+        response = httpClient.execute(httpPost);
+        // 从响应模型中获取响应实体
+        HttpEntity responseEntity = response.getEntity();
+
+        //从响应实体中截取状态码
+        String responseString = EntityUtils.toString(responseEntity).substring(EntityUtils.toString(responseEntity).lastIndexOf(":") + 1);
+        responseCode = responseString.substring(0, responseString.length() - 1);
+
+        sendProjectInfo.setHttpResponse(response.toString());
+
+        log.info("响应状态为:{}", response.getStatusLine());
+        if (responseEntity != null) {
+            log.info("响应内容长度为:{}", responseEntity.getContentLength());
+            log.info("响应内容长度为:{}", EntityUtils.toString(responseEntity));
+        }
+        try {
+            // 释放资源
+            if (httpClient != null) {
+                httpClient.close();
+            }
+            if (response != null) {
+                response.close();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        final String code = responseCode;
+        return new HashMap<String, String>() {{
+            put("responseCode", code);
+        }};
+    }
+
+    public void firstSendProject(SendProjectInfo sendProjectInfo) {
+        log.info("首次推送服务接口入参:{}", sendProjectInfo);
+        Map<String, String> responseMap = new HashMap<>();
+        try {
+            responseMap = sendProject(sendProjectInfo);
+            if (RESPONSE_SUCCESS.equals(responseMap.get("responseCode"))) {
+                sendProjectInfo.setSendState(STRING_1);
+                updateSendProjectInfo(sendProjectInfo);
+            } else {
+                sendProjectInfo.setSendState(STRING_0);
+                updateSendProjectInfo(sendProjectInfo);
+            }
+        } catch (ClientProtocolException e) {
+            sendProjectInfo.setHttpResponse(e.getMessage());
+            sendProjectInfo.setSendState(STRING_9);
+            updateSendProjectInfo(sendProjectInfo);
+            e.printStackTrace();
+        } catch (ParseException e) {
+            sendProjectInfo.setHttpResponse(e.getMessage());
+            sendProjectInfo.setSendState(STRING_9);
+            updateSendProjectInfo(sendProjectInfo);
+            e.printStackTrace();
+        } catch (IOException e) {
+            sendProjectInfo.setHttpResponse(e.getMessage());
+            sendProjectInfo.setSendState(STRING_9);
+            updateSendProjectInfo(sendProjectInfo);
+            e.printStackTrace();
+        }
+    }
+
+    public void sendProjectRetry(SendProjectInfo sendProjectInfo) {
+        Map<String, String> responseMap = new HashMap<>();
+        try {
+            responseMap = sendProject(sendProjectInfo);
+            if (RESPONSE_SUCCESS.equals(responseMap.get("responseCode"))) {
+                sendProjectInfo.setSendState(STRING_1);
+                updateSendProjectInfo(sendProjectInfo);
+            } else {
+                Integer failNum = sendProjectInfo.getFailNum();
+                failNum = ++failNum;
+                sendProjectInfo.setFailNum(failNum);
+                sendProjectInfo.setSendState(STRING_0);
+                updateSendProjectInfo(sendProjectInfo);
+            }
+        } catch (ClientProtocolException e) {
+            sendProjectInfo.setHttpResponse(e.getMessage());
+            sendProjectInfo.setSendState(STRING_9);
+            updateSendProjectInfo(sendProjectInfo);
+            e.printStackTrace();
+        } catch (ParseException e) {
+            sendProjectInfo.setHttpResponse(e.getMessage());
+            sendProjectInfo.setSendState(STRING_9);
+            updateSendProjectInfo(sendProjectInfo);
+            e.printStackTrace();
+        } catch (IOException e) {
+            sendProjectInfo.setHttpResponse(e.getMessage());
+            sendProjectInfo.setSendState(STRING_9);
+            updateSendProjectInfo(sendProjectInfo);
+            e.printStackTrace();
+        }
+    }
+
+    private void updateSendProjectInfo(SendProjectInfo sendProjectInfo) {
+        SendProjectEntity updateSendProject = new SendProjectEntity();
+        if (sendProjectInfo.getFailNum() != null) {
+            Integer failNum = sendProjectInfo.getFailNum();
+            failNum = ++failNum;
+            updateSendProject.setFailNum(failNum);
+        }
+        updateSendProject.setSendUuid(sendProjectInfo.getUuid());
+        updateSendProject.setSendState(sendProjectInfo.getSendState());
+        updateSendProject.setHttpPost(sendProjectInfo.getHttpPost());
+        updateSendProject.setHttpResponse(sendProjectInfo.getHttpResponse());
+        updateSendProject.setUpdateTime(new Date());
+        try {
+            log.info("修改推送服务数据库入参:{}", JSON.toJSON(updateSendProject));
+            sendProjectMapper.updateSendProjectInfo(updateSendProject);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("修改推送服务数据库报错:{}", e.getMessage());
+        }
+    }
+}

+ 1 - 1
src/main/resources/application.yml

@@ -3,7 +3,7 @@ server:
     encoding:
       charset: UTF-8
       force: true
-  port: 8080
+  port: 8081
 
 spring:
   profiles:

+ 19 - 0
src/main/resources/mapper/modules/order/InsOrdersMapper.xml

@@ -1804,4 +1804,23 @@
         </if>
     </select>
 
+    <resultMap id="SendProjectInfoMap" type="com.ydtech.modules.order.entity.vo.sendProject.SendProjectInfo">
+        <result property="userName" column="user_name" jdbcType="VARCHAR"/>
+        <result property="userPhone" column="user_phone" jdbcType="VARCHAR"/>
+        <result property="userCarNum" column="user_car_num" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <select id="getOrderByCompanyId" resultMap="SendProjectInfoMap" parameterType="java.lang.String">
+        SELECT
+            REPLACE(o.applyinfo -> '$.name', '"', '') AS user_name,
+            REPLACE(o.applyinfo -> '$.mobile', '"', '') AS user_phone,
+            REPLACE(o.carinfo -> '$.licenseNo', '"', '') AS user_car_num
+        FROM
+            ins_orders AS o
+            JOIN
+                ins_area_company iac ON o.orderno = iac.orderno
+        WHERE
+            iac.id = #{companyId}
+    </select>
+
 </mapper>

+ 113 - 0
src/main/resources/mapper/modules/sendProject/SendProjectMapper.xml

@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.sendProject.dao.SendProjectMapper">
+
+    <resultMap id="SendProjectEntityMap" type="com.ydtech.modules.sendProject.entity.SendProjectEntity">
+        <result property="id" column="id"/>
+        <result property="httpPost" column="http_post"/>
+        <result property="totalAmount" column="total_amount"/>
+        <result property="userName" column="user_name" jdbcType="VARCHAR"/>
+        <result property="userCarNum" column="user_car_num" jdbcType="VARCHAR"/>
+        <result property="userPhone" column="user_phone" jdbcType="VARCHAR"/>
+        <result property="httpResponse" column="http_response"/>
+        <result property="sendState" column="send_state" jdbcType="VARCHAR"/>
+        <result property="sendUuid" column="send_uuid" jdbcType="VARCHAR"/>
+        <result property="failNum" column="fail_num"/>
+        <result property="referrerNo" column="referrer_no" jdbcType="VARCHAR"/>
+        <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+        <result property="state" column="state" jdbcType="VARCHAR"/>
+        <result property="isDelete" column="is_delete" jdbcType="VARCHAR"/>
+        <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="remark" column="remark" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="selectSendProjectEntity">
+        SELECT
+            id,
+            http_post,
+            total_amount,
+            user_name,
+            user_car_num,
+            user_phone,
+            http_response,
+            send_state,
+            send_uuid,
+            fail_num,
+            user_id,
+            referrer_no
+        FROM
+            send_project_history
+    </sql>
+
+    <select id="getSendFailInfo" resultMap="SendProjectEntityMap">
+        <include refid="selectSendProjectEntity"/>
+        WHERE
+            send_state IN ('0', '9')
+    </select>
+
+    <insert id="addSendProjectInfo" parameterType="com.ydtech.modules.sendProject.entity.SendProjectEntity"
+            useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO send_project_history
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="httpPost != null and httpPost != ''">http_post,</if>
+            <if test="totalAmount != null">total_amount,</if>
+            <if test="userName != null and userName != ''">user_name,</if>
+            <if test="userCarNum != null and userCarNum != ''">user_car_num,</if>
+            <if test="userPhone != null and userPhone != ''">user_phone,</if>
+            <if test="httpResponse != null and httpResponse != ''">http_response,</if>
+            <if test="sendState != null and sendState != ''">send_state,</if>
+            <if test="sendUuid != null and sendUuid != ''">send_uuid,</if>
+            <if test="failNum != null">fail_num,</if>
+            <if test="referrerNo != null and referrerNo != ''">referrer_no,</if>
+            <if test="userId != null and userId != ''">user_id,</if>
+            <if test="state != null and state != ''">state,</if>
+            <if test="isDelete != null and isDelete != ''">is_delete,</if>
+            <if test="createBy != null and createBy != ''">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null and updateBy != ''">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null and remark != ''">remark,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="httpPost != null and httpPost != ''">#{httpPost},</if>
+            <if test="totalAmount != null">#{totalAmount},</if>
+            <if test="userName != null and userName != ''">#{userName},</if>
+            <if test="userCarNum != null and userCarNum != ''">#{userCarNum},</if>
+            <if test="userPhone != null and userPhone != ''">#{userPhone},</if>
+            <if test="httpResponse != null and httpResponse != ''">#{httpResponse},</if>
+            <if test="sendState != null and sendState != ''">#{sendState},</if>
+            <if test="sendUuid != null and sendUuid != ''">#{sendUuid},</if>
+            <if test="failNum != null">#{failNum},</if>
+            <if test="referrerNo != null and referrerNo != ''">#{referrerNo},</if>
+            <if test="userId != null and userId != ''">#{userId},</if>
+            <if test="state != null and state != ''">#{state},</if>
+            <if test="isDelete != null and isDelete != ''">#{isDelete},</if>
+            <if test="createBy != null and createBy != ''">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null and updateBy != ''">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null and remark != ''">#{remark},</if>
+        </trim>
+    </insert>
+
+    <update id="updateSendProjectInfo" parameterType="com.ydtech.modules.sendProject.entity.SendProjectEntity">
+        UPDATE send_project_history
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="sendState != null and sendState != ''">send_state = #{sendState},</if>
+            <if test="httpPost != null and httpPost != ''">http_post = #{httpPost},</if>
+            <if test="httpResponse != null and httpResponse != ''">http_response = #{httpResponse},</if>
+            <if test="failNum != null">fail_num = #{failNum},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        WHERE
+            send_uuid = #{sendUuid}
+    </update>
+
+</mapper>