Merge remote-tracking branch 'origin/main'

This commit is contained in:
wangwenhua 2025-09-14 17:51:29 +08:00
commit 31cad54e46
1519 changed files with 522 additions and 35236 deletions

16
.gitignore vendored Normal file
View File

@ -0,0 +1,16 @@
# IDEA
.idea/
*.iml
# 编译输出
/out/
target/
build/
# 日志、临时文件
*.log
*.tmp
# 操作系统垃圾
.DS_Store
Thumbs.db

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CheckStyle-IDEA" serialisationVersion="2">
<checkstyleVersion>10.26.1</checkstyleVersion>
<scanScope>JavaOnly</scanScope>
<copyLibs>true</copyLibs>
<option name="thirdPartyClasspath" />
<option name="activeLocationIds" />
<option name="locations">
<list>
<ConfigurationLocation id="bundled-sun-checks" type="BUNDLED" scope="All" description="Sun Checks">(bundled)</ConfigurationLocation>
<ConfigurationLocation id="bundled-google-checks" type="BUNDLED" scope="All" description="Google Checks">(bundled)</ConfigurationLocation>
</list>
</option>
</component>
</project>

View File

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="springbootmybatis" />
</profile>
</annotationProcessing>
<bytecodeTargetLevel target="8" />
</component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
<module name="springbootmybatis" options="-parameters" />
</option>
</component>
</project>

View File

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="dataSourceStorageLocal" created-in="IU-252.25557.131">
<data-source name="surportdb@localhost" uuid="4dda967d-7d48-4880-aff4-fb7cd7b8baa4">
<database-info product="MySQL" version="5.5.19" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-j-8.2.0 (Revision: 06a1f724497fd81c6a659131fda822c9e5085b6c)" dbms="MYSQL" exact-version="5.5.19" exact-driver-version="8.2">
<extra-name-characters>#@</extra-name-characters>
<identifier-quote-string>`</identifier-quote-string>
</database-info>
<case-sensitivity plain-identifiers="lower" quoted-identifiers="lower" />
<secret-storage>master_key</secret-storage>
<user-name>root</user-name>
<schema-mapping>
<introspection-scope>
<node kind="schema" qname="@" />
</introspection-scope>
</schema-mapping>
<load-sources>user_and_system_sources</load-sources>
</data-source>
</component>
</project>

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="surportdb@localhost" uuid="4dda967d-7d48-4880-aff4-fb7cd7b8baa4">
<driver-ref>mysql.8</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://localhost:3308/surportdb</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

File diff suppressed because it is too large Load Diff

View File

@ -1,2 +0,0 @@
#n:information_schema
!<md> [null, 0, null, null, -2147483648, -2147483648]

View File

@ -1,2 +0,0 @@
#n:mysql
!<md> [null, 0, null, null, -2147483648, -2147483648]

View File

@ -1,2 +0,0 @@
#n:performance_schema
!<md> [null, 0, null, null, -2147483648, -2147483648]

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourcePerFileMappings">
<file url="file://$PROJECT_DIR$/src/main/resources/mapper/tbl/IconMapper.xml" value="4dda967d-7d48-4880-aff4-fb7cd7b8baa4" />
</component>
</project>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
</component>
</project>

View File

@ -1,5 +0,0 @@
{
"code": 403,
"data": "",
"message": "无访问权限"
}

View File

@ -1,2 +0,0 @@
# domain path name value date
localhost / JSESSIONID E291DD00A087DE0BB2F330B40FCCB213 -1

View File

@ -1,10 +0,0 @@
POST http://localhost:8099/scenarioOrgPost/getSelectedOrgId
User-Agent: IntelliJ HTTP Client/IntelliJ IDEA 2025.2.1
Accept-Encoding: br, deflate, gzip, x-gzip
Accept: */*
content-length: 0
<> 2025-09-09T171744.401.json
###

View File

@ -1,8 +0,0 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true">
<option name="METHOD_MATCHER_CONFIG" value="java.util.Formatter,format,java.io.Writer,append,com.google.common.base.Preconditions,checkNotNull,org.hibernate.Session,close,java.io.PrintWriter,printf,java.io.PrintStream,printf,java.lang.foreign.Arena,ofAuto,java.lang.foreign.Arena,global,java.util.Map,remove" />
</inspection_tool>
</profile>
</component>

View File

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="central" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ASMIdeaPluginConfiguration">
<asm skipDebug="false" skipFrames="false" skipCode="false" expandFrames="false" />
<groovy codeStyle="LEGACY" />
</component>
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
</project>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/springbootmybatis.iml" filepath="$PROJECT_DIR$/springbootmybatis.iml" />
</modules>
</component>
</project>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="PROJECT" dialect="MySQL" />
</component>
</project>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@ -1,460 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="af4c07b7-4ec6-4591-87e0-621479a360cc" name="更改" comment="初次提交">
<change afterPath="$PROJECT_DIR$/src/main/demo.html" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/hivekion/baseData/entity/OrgSupplier.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/hivekion/baseData/mapper/OrgSupplierMapper.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/hivekion/baseData/service/OrgSupplierService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/hivekion/baseData/service/impl/OrgSupplierServiceImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/hivekion/scenario/controller/ScenarioSupplierController.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/hivekion/scenario/controller/ScenarioTaskController.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/hivekion/scenario/entity/ScenarioSupplier.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/hivekion/scenario/entity/ScenarioTask.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/hivekion/scenario/mapper/ScenarioSupplierMapper.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/hivekion/scenario/mapper/ScenarioTaskMapper.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/hivekion/scenario/service/ScenarioSupplierService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/hivekion/scenario/service/ScenarioTaskService.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/hivekion/scenario/service/impl/ScenarioSupplierServiceImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/hivekion/scenario/service/impl/ScenarioTaskServiceImpl.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/resources/mapper/tbl/OrgSupplierMapper.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/resources/mapper/tbl/ScenarioSupplierMapper.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/resources/mapper/tbl/ScenarioTaskMapper.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/baseData/entity/OrgSupplier.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/baseData/mapper/OrgSupplierMapper.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/baseData/service/OrgSupplierService.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/baseData/service/impl/OrgSupplierServiceImpl.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/scenario/bean/ScenarioWsParam.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/scenario/controller/ScenarioSupplierController.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/scenario/controller/ScenarioTaskController.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/scenario/entity/ScenarioSupplier.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/scenario/entity/ScenarioTask.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/scenario/mapper/ScenarioSupplierMapper.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/scenario/mapper/ScenarioTaskMapper.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/scenario/service/ScenarioSupplierService.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/scenario/service/ScenarioTaskService.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/scenario/service/TaskLogicService.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/scenario/service/impl/ScenarioSupplierServiceImpl.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/scenario/service/impl/ScenarioTaskServiceImpl.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/scenario/service/impl/TaskLogicServiceImpl.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/statistic/bean/AmmunitionInfo.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/statistic/bean/CountInfo.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/statistic/bean/FoodInfo.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/statistic/bean/FuelInfo.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/statistic/bean/MedicalInfo.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/statistic/bean/WaterInfo.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/statistic/service/StatisticService.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/com/hivekion/statistic/service/impl/StatisticServiceImpl.class" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/mapper/tbl/OrgSupplierMapper.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/mapper/tbl/ScenarioSupplierMapper.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/target/classes/mapper/tbl/ScenarioTaskMapper.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Interface" />
<option value="Class" />
<option value="HTML File" />
</list>
</option>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="HttpClientOnboardingState">{
&quot;isOnboardingCommentShown&quot;: true
}</component>
<component name="KubernetesApiPersistence">{}</component>
<component name="KubernetesApiProvider">{
&quot;isMigrated&quot;: true
}</component>
<component name="MavenImportPreferences">
<option name="generalSettings">
<MavenGeneralSettings>
<option name="userSettingsFile" value="D:\software\apache-maven-3.9.2\conf\settings.xml" />
</MavenGeneralSettings>
</option>
</component>
<component name="ProjectColorInfo">{
&quot;customColor&quot;: &quot;&quot;,
&quot;associatedIndex&quot;: 2
}</component>
<component name="ProjectId" id="30xEDuypSMTWMYEEfYAu7JmzPDG" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"DefaultHtmlFileTemplate": "HTML File",
"HTTP 请求.generated-requests | #1.executor": "Run",
"JUnit.ApplicationTest.executor": "Run",
"JUnit.ApplicationTest.hello.executor": "Run",
"JUnit.ApplicationTest.modStatus.executor": "Run",
"JUnit.ApplicationTest.scenarioHistory.executor": "Run",
"Maven.springbootmybatis [clean].executor": "Run",
"Maven.springbootmybatis [compile].executor": "Run",
"Maven.springbootmybatis [package].executor": "Run",
"ModuleVcsDetector.initialDetectionPerformed": "true",
"RequestMappingsPanelOrder0": "0",
"RequestMappingsPanelOrder1": "1",
"RequestMappingsPanelWidth0": "75",
"RequestMappingsPanelWidth1": "75",
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.git.unshallow": "true",
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
"Spring Boot.DemoApplication.executor": "Run",
"git-widget-placeholder": "main",
"kotlin-language-version-configured": "true",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)",
"nodejs_package_manager_path": "npm",
"project.structure.last.edited": "SDK",
"project.structure.proportion": "0.15",
"project.structure.side.proportion": "0.2",
"settings.editor.selected.configurable": "reference.projectsettings.compiler.javacompiler",
"vue.rearranger.settings.migration": "true",
"应用程序.CodeGenerator.executor": "Run",
"应用程序.JsonTest.executor": "Run",
"应用程序.ResponseData.executor": "Run",
"应用程序.SimtoolWeather.executor": "Run"
},
"keyToStringList": {
"DatabaseDriversLRU": [
"mysql"
]
}
}]]></component>
<component name="ReactorSettings">
<option name="notificationShown" value="true" />
</component>
<component name="RecentsManager">
<key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
<recent name="com.hivekion" />
</key>
</component>
<component name="RunDashboard">
<option name="configurationStatuses">
<map>
<entry key="HttpClient.HttpRequestRunConfigurationType">
<value>
<map>
<entry key="generated-requests | #1" value="STOPPED" />
</map>
</value>
</entry>
</map>
</option>
</component>
<component name="RunManager" selected="Spring Boot.DemoApplication">
<configuration name="CodeGenerator" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="com.hivekion.CodeGenerator" />
<module name="springbootmybatis" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="com.hivekion.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="SimtoolWeather" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="com.hivekion.environment.entity.SimtoolWeather" />
<module name="springbootmybatis" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="com.hivekion.environment.entity.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="generated-requests | #1" type="HttpClient.HttpRequestRunConfigurationType" factoryName="HTTP Request" temporary="true" nameIsGenerated="true" path="$APPLICATION_CONFIG_DIR$/scratches/generated-requests.http" executionIdentifier="#1" runType="运行单个请求">
<method v="2" />
</configuration>
<configuration name="ApplicationTest" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="springbootmybatis" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="com.hivekion.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="PACKAGE_NAME" value="com.hivekion" />
<option name="MAIN_CLASS_NAME" value="com.hivekion.ApplicationTest" />
<option name="TEST_OBJECT" value="class" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="ApplicationTest.modStatus" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="springbootmybatis" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="com.hivekion.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="PACKAGE_NAME" value="com.hivekion" />
<option name="MAIN_CLASS_NAME" value="com.hivekion.ApplicationTest" />
<option name="METHOD_NAME" value="modStatus" />
<option name="TEST_OBJECT" value="method" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="DemoApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
<module name="springbootmybatis" />
<option name="SPRING_BOOT_MAIN_CLASS" value="com.hivekion.DemoApplication" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<recent_temporary>
<list>
<item itemvalue="应用程序.CodeGenerator" />
<item itemvalue="HTTP 请求.generated-requests | #1" />
<item itemvalue="应用程序.SimtoolWeather" />
<item itemvalue="JUnit.ApplicationTest.modStatus" />
<item itemvalue="JUnit.ApplicationTest" />
</list>
</recent_temporary>
</component>
<component name="SharedIndexes">
<attachedChunks>
<set>
<option value="bundled-jdk-9823dce3aa75-bf35d07a577b-intellij.indexing.shared.core-IU-252.25557.131" />
<option value="bundled-js-predefined-d6986cc7102b-b598e85cdad2-JavaScript-IU-252.25557.131" />
</set>
</attachedChunks>
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="默认任务">
<changelist id="af4c07b7-4ec6-4591-87e0-621479a360cc" name="更改" comment="" />
<created>1754560710248</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1754560710248</updated>
<workItem from="1754560714503" duration="2195000" />
<workItem from="1754563543522" duration="8000" />
<workItem from="1754564611042" duration="2016000" />
<workItem from="1754567879649" duration="1208000" />
<workItem from="1754614336718" duration="11404000" />
<workItem from="1754631088525" duration="65000" />
<workItem from="1754633571570" duration="1496000" />
<workItem from="1754874206200" duration="13510000" />
<workItem from="1754962724451" duration="10037000" />
<workItem from="1754984981453" duration="2957000" />
<workItem from="1754992631423" duration="3014000" />
<workItem from="1755048980541" duration="2066000" />
<workItem from="1755053436455" duration="1470000" />
<workItem from="1755055996312" duration="565000" />
<workItem from="1755057920828" duration="874000" />
<workItem from="1755070571207" duration="572000" />
<workItem from="1755078865960" duration="3173000" />
<workItem from="1755082671077" duration="726000" />
<workItem from="1755132776936" duration="22676000" />
<workItem from="1755411808622" duration="144000" />
<workItem from="1755564998541" duration="351000" />
<workItem from="1755566075130" duration="9685000" />
<workItem from="1755588219539" duration="3557000" />
<workItem from="1755597064946" duration="2883000" />
<workItem from="1755660166813" duration="7148000" />
<workItem from="1755674487681" duration="299000" />
<workItem from="1755739709488" duration="1736000" />
<workItem from="1756343433194" duration="32119000" />
<workItem from="1756429582447" duration="11015000" />
<workItem from="1756693419024" duration="908000" />
<workItem from="1756696042739" duration="7000" />
<workItem from="1756777851977" duration="842000" />
<workItem from="1756779843353" duration="9363000" />
<workItem from="1756796244702" duration="922000" />
<workItem from="1756810818498" duration="1042000" />
<workItem from="1756861095122" duration="26709000" />
<workItem from="1756952900077" duration="622000" />
<workItem from="1757058212763" duration="1247000" />
<workItem from="1757061103942" duration="1316000" />
<workItem from="1757063897795" duration="203000" />
<workItem from="1757226926931" duration="15123000" />
<workItem from="1757247397897" duration="141000" />
<workItem from="1757293603104" duration="7511000" />
<workItem from="1757379564655" duration="27531000" />
<workItem from="1757466364570" duration="7473000" />
<workItem from="1757551777310" duration="27165000" />
<workItem from="1757646901779" duration="1536000" />
<workItem from="1757745562472" duration="11951000" />
<workItem from="1757761044173" duration="32000" />
<workItem from="1757813716738" duration="15793000" />
</task>
<task id="LOCAL-00001" summary="初次提交">
<option name="closed" value="true" />
<created>1754561049395</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1754561049395</updated>
</task>
<task id="LOCAL-00002" summary="初次提交">
<option name="closed" value="true" />
<created>1754562853375</created>
<option name="number" value="00002" />
<option name="presentableId" value="LOCAL-00002" />
<option name="project" value="LOCAL" />
<updated>1754562853375</updated>
</task>
<task id="LOCAL-00003" summary="初次提交">
<option name="closed" value="true" />
<created>1754565249597</created>
<option name="number" value="00003" />
<option name="presentableId" value="LOCAL-00003" />
<option name="project" value="LOCAL" />
<updated>1754565249597</updated>
</task>
<task id="LOCAL-00004" summary="初次提交">
<option name="closed" value="true" />
<created>1754566593438</created>
<option name="number" value="00004" />
<option name="presentableId" value="LOCAL-00004" />
<option name="project" value="LOCAL" />
<updated>1754566593438</updated>
</task>
<task id="LOCAL-00005" summary="初次提交">
<option name="closed" value="true" />
<created>1754631103549</created>
<option name="number" value="00005" />
<option name="presentableId" value="LOCAL-00005" />
<option name="project" value="LOCAL" />
<updated>1754631103549</updated>
</task>
<task id="LOCAL-00006" summary="初次提交">
<option name="closed" value="true" />
<created>1754631112719</created>
<option name="number" value="00006" />
<option name="presentableId" value="LOCAL-00006" />
<option name="project" value="LOCAL" />
<updated>1754631112719</updated>
</task>
<task id="LOCAL-00007" summary="初次提交">
<option name="closed" value="true" />
<created>1754884616330</created>
<option name="number" value="00007" />
<option name="presentableId" value="LOCAL-00007" />
<option name="project" value="LOCAL" />
<updated>1754884616330</updated>
</task>
<task id="LOCAL-00008" summary="初次提交">
<option name="closed" value="true" />
<created>1757572201371</created>
<option name="number" value="00008" />
<option name="presentableId" value="LOCAL-00008" />
<option name="project" value="LOCAL" />
<updated>1757572201371</updated>
</task>
<task id="LOCAL-00009" summary="初次提交">
<option name="closed" value="true" />
<created>1757747521654</created>
<option name="number" value="00009" />
<option name="presentableId" value="LOCAL-00009" />
<option name="project" value="LOCAL" />
<updated>1757747521654</updated>
</task>
<task id="LOCAL-00010" summary="初次提交">
<option name="closed" value="true" />
<created>1757750237450</created>
<option name="number" value="00010" />
<option name="presentableId" value="LOCAL-00010" />
<option name="project" value="LOCAL" />
<updated>1757750237450</updated>
</task>
<task id="LOCAL-00011" summary="初次提交">
<option name="closed" value="true" />
<created>1757818188742</created>
<option name="number" value="00011" />
<option name="presentableId" value="LOCAL-00011" />
<option name="project" value="LOCAL" />
<updated>1757818188742</updated>
</task>
<task id="LOCAL-00012" summary="初次提交">
<option name="closed" value="true" />
<created>1757830773257</created>
<option name="number" value="00012" />
<option name="presentableId" value="LOCAL-00012" />
<option name="project" value="LOCAL" />
<updated>1757830773257</updated>
</task>
<option name="localTasksCounter" value="13" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="初次提交" />
<option name="LAST_COMMIT_MESSAGE" value="初次提交" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/main/java/com/hivekion/system/controller/UserLoginController.java</url>
<line>179</line>
<option name="timeStamp" value="2" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/main/java/com/hivekion/baseData/controller/TreeController.java</url>
<line>64</line>
<option name="timeStamp" value="3" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/test/java/com/hivekion/JsonTest.java</url>
<line>40</line>
<option name="timeStamp" value="8" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/main/java/com/hivekion/environment/service/impl/SimtoolWeatherServiceImpl.java</url>
<line>25</line>
<option name="timeStamp" value="17" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/main/java/com/hivekion/baseData/service/impl/TblEntityServiceImpl.java</url>
<line>94</line>
<option name="timeStamp" value="19" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-field">
<url>file://$PROJECT_DIR$/src/main/java/com/hivekion/common/config/WebSecurityConfig.java</url>
<line>34</line>
<properties field="userDetailsService" class="com.hivekion.common.config.WebSecurityConfig" />
<option name="timeStamp" value="12" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-method">
<url>file://$PROJECT_DIR$/src/main/java/com/hivekion/baseData/service/impl/TblEntityServiceImpl.java</url>
<line>251</line>
<properties class="com.hivekion.baseData.service.impl.TblEntityServiceImpl">
<option name="EMULATED" value="true" />
<option name="WATCH_EXIT" value="false" />
</properties>
<option name="timeStamp" value="20" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
</component>
<component name="XSLT-Support.FileAssociations.UIState">
<expand />
<select />
</component>
</project>

View File

@ -1,10 +1,89 @@
<!DOCTYPE html>
<html lang="en">
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
<meta charset="utf-8">
<title>Google Map 绘制路线</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
html, body, #map {
height: 100%;
margin: 0;
padding: 0;
width: 100%;
}
#map {
height: 100vh;
width: 100vw;
max-width: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
// 你的坐标点数据
const coordinates = [
[121.148362,25.007064],
[121.147496,25.00752],
[121.147192,25.007612],
[121.146891,25.00789],
[121.147089,25.008096],
[121.148939,25.010199],
[121.149814,25.01108],
[121.150415,25.011655],
[121.150568,25.011768],
[121.151121,25.012033],
[121.151473,25.012199],
[121.153264,25.012971],
[121.154028,25.013381],
[121.155039,25.01385],
[121.155173,25.013938],
[121.155642,25.014328],
[121.156141,25.01477],
[121.156821,25.015341],
[121.156284,25.015809],
[121.156031,25.01598],
[121.15582,25.016178],
[121.15923,25.019152],
[121.158644,25.019264],
[121.157153,25.019622]
].map(([lng, lat]) => ({lat: lat, lng: lng}));
function initMap() {
// 地图居中点
const center = coordinates[Math.floor(coordinates.length / 2)];
const map = new google.maps.Map(document.getElementById('map'), {
zoom: 15,
center: center,
mapTypeId: 'roadmap'
});
// 绘制路线
const routePath = new google.maps.Polyline({
path: coordinates,
geodesic: true,
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 4
});
routePath.setMap(map);
// 起点和终点标记
new google.maps.Marker({
position: coordinates[0],
map: map,
label: "起"
});
new google.maps.Marker({
position: coordinates[coordinates.length - 1],
map: map,
label: "终"
});
}
</script>
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>
</body>
</html>

View File

@ -0,0 +1,100 @@
package com.hivekion.common;
/**
* [类的简要说明]
* <p>
* [详细描述可选]
* <p>
*
* @author LiDongYU
* @since 2025/7/22
*/
public class GeoPosition {
// 地球半径单位
private static final double EARTH_RADIUS = 6371000.0;
// 角度转弧度
public static double toRadians(double degree) {
return degree * Math.PI / 180.0;
}
// 弧度转角度
public static double toDegrees(double radian) {
return radian * 180.0 / Math.PI;
}
// 球面距离haversine公式
public static double haversine(double lat1, double lon1, double lat2, double lon2) {
double dLat = toRadians(lat2 - lat1);
double dLon = toRadians(lon2 - lon1);
lat1 = toRadians(lat1);
lat2 = toRadians(lat2);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat1) * Math.cos(lat2) *
Math.sin(dLon/2) * Math.sin(dLon/2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
return EARTH_RADIUS * c;
}
// 球面线性插值Slerp大圆航线插值
public static double[] interpolate(double lat1, double lon1, double lat2, double lon2, double f) {
// 转为弧度
lat1 = toRadians(lat1);
lon1 = toRadians(lon1);
lat2 = toRadians(lat2);
lon2 = toRadians(lon2);
double sinLat1 = Math.sin(lat1), cosLat1 = Math.cos(lat1);
double sinLat2 = Math.sin(lat2), cosLat2 = Math.cos(lat2);
double deltaLon = lon2 - lon1;
double a = Math.sin((1-f) * haversineAngle(lat1, lon1, lat2, lon2)) / Math.sin(haversineAngle(lat1, lon1, lat2, lon2));
double b = Math.sin(f * haversineAngle(lat1, lon1, lat2, lon2)) / Math.sin(haversineAngle(lat1, lon1, lat2, lon2));
// 球面坐标
double x = a * cosLat1 * Math.cos(lon1) + b * cosLat2 * Math.cos(lon2);
double y = a * cosLat1 * Math.sin(lon1) + b * cosLat2 * Math.sin(lon2);
double z = a * sinLat1 + b * sinLat2;
double lat = Math.atan2(z, Math.sqrt(x*x + y*y));
double lon = Math.atan2(y, x);
return new double[] { toDegrees(lat), toDegrees(lon) };
}
// 计算球面距离的角度弧度
public static double haversineAngle(double lat1, double lon1, double lat2, double lon2) {
double dLat = lat2 - lat1;
double dLon = lon2 - lon1;
double a = Math.sin(dLat/2) * Math.sin(dLat/2)
+ Math.cos(lat1) * Math.cos(lat2)
* Math.sin(dLon/2) * Math.sin(dLon/2);
return 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
}
public static void main(String[] args) {
// 起点
double lon1 = 121.148362;
double lat1 = 25.007064;
// 终点
double lon2 = 121.147192;
double lat2 = 25.007612;
// 速度/
double speed = 5.0;
// 已行驶时间
double seconds = 30.0;
// 计算总距离
double totalDist = haversine(lat1, lon1, lat2, lon2);
// 已行驶距离
double movedDist = speed * seconds;
// 占比
double f = Math.min(movedDist / totalDist, 1.0);
// 球面插值
double[] pos = interpolate(lat1, lon1, lat2, lon2, f);
System.out.printf("当前位置:经度 %.6f, 纬度 %.6f\n", pos[1], pos[0]);
}
}

View File

@ -0,0 +1,121 @@
package com.hivekion.common;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MultiPointGeoPosition {
private static final double EARTH_RADIUS = 6371000.0;
public static double toRadians(double degree) {
return degree * Math.PI / 180.0;
}
public static double toDegrees(double radian) {
return radian * 180.0 / Math.PI;
}
public static double haversine(double lat1, double lon1, double lat2, double lon2) {
double dLat = toRadians(lat2 - lat1);
double dLon = toRadians(lon2 - lon1);
lat1 = toRadians(lat1);
lat2 = toRadians(lat2);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat1) * Math.cos(lat2) *
Math.sin(dLon/2) * Math.sin(dLon/2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
return EARTH_RADIUS * c;
}
public static double haversineAngle(double lat1, double lon1, double lat2, double lon2) {
double dLat = toRadians(lat2 - lat1);
double dLon = toRadians(lon2 - lon1);
lat1 = toRadians(lat1);
lat2 = toRadians(lat2);
double a = Math.sin(dLat/2) * Math.sin(dLat/2)
+ Math.cos(lat1) * Math.cos(lat2)
* Math.sin(dLon/2) * Math.sin(dLon/2);
return 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
}
public static double[] interpolate(double lat1, double lon1, double lat2, double lon2, double f) {
lat1 = toRadians(lat1);
lon1 = toRadians(lon1);
lat2 = toRadians(lat2);
lon2 = toRadians(lon2);
double delta = haversineAngle(Math.toDegrees(lat1), Math.toDegrees(lon1), Math.toDegrees(lat2), Math.toDegrees(lon2));
if (delta == 0) return new double[] { Math.toDegrees(lat1), Math.toDegrees(lon1) };
double A = Math.sin((1 - f) * delta) / Math.sin(delta);
double B = Math.sin(f * delta) / Math.sin(delta);
double x = A * Math.cos(lat1) * Math.cos(lon1) + B * Math.cos(lat2) * Math.cos(lon2);
double y = A * Math.cos(lat1) * Math.sin(lon1) + B * Math.cos(lat2) * Math.sin(lon2);
double z = A * Math.sin(lat1) + B * Math.sin(lat2);
double lat = Math.atan2(z, Math.sqrt(x * x + y * y));
double lon = Math.atan2(y, x);
return new double[] { toDegrees(lat), toDegrees(lon) };
}
public static class PositionResult {
public final double latitude;
public final double longitude;
public final boolean reached;
public PositionResult(double latitude, double longitude, boolean reached) {
this.latitude = latitude;
this.longitude = longitude;
this.reached = reached;
}
}
public static PositionResult getPosition(List<double[]> points, double speed, double seconds) {
if (points == null || points.size() < 2) throw new IllegalArgumentException("点数必须≥2");
List<Double> segDists = new ArrayList<>();
double totalDist = 0.0;
for (int i = 1; i < points.size(); i++) {
double[] p1 = points.get(i - 1);
double[] p2 = points.get(i);
double d = haversine(p1[1], p1[0], p2[1], p2[0]);
segDists.add(d);
totalDist += d;
}
double movedDist = speed * seconds;
if (movedDist >= totalDist) {
double[] last = points.get(points.size() - 1);
return new PositionResult(last[1], last[0], true);
}
double accum = 0.0;
for (int i = 0; i < segDists.size(); i++) {
double seg = segDists.get(i);
if (movedDist <= accum + seg) {
double remain = movedDist - accum;
double f = remain / seg;
double[] p1 = points.get(i);
double[] p2 = points.get(i + 1);
double[] pos = interpolate(p1[1], p1[0], p2[1], p2[0], f);
return new PositionResult(pos[0], pos[1], false);
}
accum += seg;
}
double[] last = points.get(points.size() - 1);
return new PositionResult(last[1], last[0], true);
}
public static void main(String[] args) {
List<double[]> points = Arrays.asList(
new double[] {121.148362, 25.007064},
new double[] {121.147192, 25.007612},
new double[] {121.146891, 25.00789},
new double[] {121.147089, 25.008096}
);
double speed = 5.0;
double time = 30.0;
PositionResult pos = getPosition(points, speed, time);
System.out.printf("当前位置:纬度 %.6f, 经度 %.6f, 是否到达:%s\n", pos.latitude, pos.longitude, pos.reached ? "" : "");
}
}

View File

@ -0,0 +1,14 @@
package com.hivekion.scenario;
/**
* [类的简要说明]
* <p>
* [详细描述可选]
* <p>
*
* @author LiDongYU
* @since 2025/7/22
*/
public interface TaskFinishedCall {
void doneTask();
}

View File

@ -14,5 +14,5 @@ import lombok.Data;
@Data
public class ScenarioWsParam {
//放大倍数
private Integer amg;
private Integer mag;
}

View File

@ -1,12 +1,15 @@
package com.hivekion.scenario.controller;
import com.hivekion.Global;
import com.hivekion.baseData.controller.BaseController;
import com.hivekion.common.entity.PagedResultVo;
import com.hivekion.common.entity.ResponseData;
import com.hivekion.common.security.SecurityUtils;
import com.hivekion.common.uuid.IdUtils;
import com.hivekion.scenario.bean.ScenarioWsParam;
import com.hivekion.scenario.entity.ScenarioRoom;
import com.hivekion.scenario.service.ScenarioRoomService;
import com.hivekion.scenario.service.ScenarioTaskService;
import io.swagger.annotations.ApiOperation;
import java.time.LocalDateTime;
import java.util.List;
@ -32,6 +35,8 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/scenario/room")
public class ScenarioRoomController extends BaseController {
@Resource
private ScenarioTaskService scenarioTaskService;
@Resource
private ScenarioRoomService scenarioRoomService;
@ -62,7 +67,7 @@ public class ScenarioRoomController extends BaseController {
if (room.getId() == null) {
room.setId(IdUtils.randomUUID());
room.setCreateTime(LocalDateTime.now());
room.setUserId( SecurityUtils.getCurrentLoginUser().getUserId());
room.setUserId(SecurityUtils.getCurrentLoginUser().getUserId());
}
scenarioRoomService.saveOrUpdate(room);
return ResponseData.success(room);
@ -73,4 +78,42 @@ public class ScenarioRoomController extends BaseController {
scenarioRoomService.removeById(id);
return ResponseData.success(null);
}
@PostMapping("/start")
public ResponseData<Void> start(@RequestBody ScenarioRoom room) {
scenarioTaskService.start(room.getScenarioId(), room.getId());
return ResponseData.success(null);
}
@PostMapping("/break")
public ResponseData<Void> breakAWhile(@RequestBody ScenarioRoom room) {
scenarioTaskService.sleepWhile(room.getScenarioId(), room.getId());
return ResponseData.success(null);
}
@PostMapping("/wakeUp")
public ResponseData<Void> wakeUp(@RequestBody ScenarioRoom room) {
scenarioTaskService.wakeup(room.getScenarioId(), room.getId());
return ResponseData.success(null);
}
@PostMapping("/mag")
public ResponseData<Void> mag(@RequestBody ScenarioRoom room) {
synchronized (this) {
if (Global.roomParamMap.get(room.getScenarioId() + "_" + room.getId()) == null) {
Global.roomParamMap.put(room.getScenarioId() + "_" + room.getId(), new ScenarioWsParam());
}
ScenarioWsParam magValue = Global.roomParamMap.get(room.getScenarioId() + "_" + room.getId());
magValue.setMag(room.getMag());
}
return ResponseData.success(null);
}
@PostMapping("/stop")
public ResponseData<Void> stop(@RequestBody ScenarioRoom room) {
scenarioTaskService.stop(room.getScenarioId(), room.getId());
return ResponseData.success(null);
}
}

View File

@ -56,4 +56,5 @@ public class ScenarioTaskController {
public ResponseData<ScenarioTask> view(@PathVariable("id") String id) {
return ResponseData.success(scenarioTaskService.getById(id));
}
}

View File

@ -31,11 +31,12 @@ public class ScenarioRoom extends SearchInputVo {
private String roomName;
@NotNull(message = "想定ID不能为空")
@TableField(value="scenario_id")
private String scenarioId;
private Integer scenarioId;
@TableField(value="user_id")
private String userId;
@TableField(value="create_time")
private LocalDateTime createTime;
@TableField(exist = false)
private Integer mag;
}

View File

@ -58,4 +58,5 @@ public class ScenarioTask implements Serializable {
private String taskType;
@TableField(exist = false)
private String status;
}

View File

@ -1,6 +1,7 @@
package com.hivekion.scenario.service;
import com.hivekion.baseData.entity.Scenario;
import com.hivekion.scenario.TaskFinishedCall;
import com.hivekion.scenario.entity.ScenarioTask;
/**
@ -15,11 +16,11 @@ import com.hivekion.scenario.entity.ScenarioTask;
public interface TaskLogicService {
//移动任务
void handleMoveTask(ScenarioTask task, Scenario scenario, String roomId);
void handleMoveTask(ScenarioTask task, Scenario scenario, String roomId,double speed,
TaskFinishedCall call);
//战斗任务
void handleBattleTask(ScenarioTask task, Scenario scenario, String roomId);
//整备
void restTask(ScenarioTask task,Scenario scenario, String roomId);
//保障任务
void supplierTask(ScenarioTask task,Scenario scenario, String roomId);

View File

@ -16,9 +16,8 @@ import com.hivekion.environment.service.SimtoolWeatherService;
import com.hivekion.scenario.entity.ScenarioTask;
import com.hivekion.scenario.mapper.ScenarioTaskMapper;
import com.hivekion.scenario.service.ScenarioTaskService;
import com.hivekion.scenario.service.TaskLogicService;
import com.hivekion.thread.SpringGlobalTaskManager;
import java.text.SimpleDateFormat;
import java.time.format.DateTimeFormatter;
import java.util.List;
import javax.annotation.Resource;
@ -49,6 +48,8 @@ public class ScenarioTaskServiceImpl extends
@Resource
private IWeatherResourceService weatherResourceService;
@Resource
private TaskLogicService taskLogicService;
@Override
public void start(Integer id, String roomId) {
@ -76,8 +77,7 @@ public class ScenarioTaskServiceImpl extends
weatherTrigger(currentScenario, roomId);
//任务触发
taskTrigger(currentScenario, roomId);
//物资变化
supplierChangeUseUp(currentScenario, roomId);
});
}).start();
}
@ -99,7 +99,7 @@ public class ScenarioTaskServiceImpl extends
private void increaseTime(Scenario currentScenario, String roomId) {
int mag = Global.roomParamMap.get(currentScenario.getId() + "_" + roomId) == null ? 1
: Global.roomParamMap.get(currentScenario.getId() + "_" + roomId).getAmg();
: Global.roomParamMap.get(currentScenario.getId() + "_" + roomId).getMag();
//获取当前状态
Object statusObj = redisUtil.hget(roomId + "_" + currentScenario.getId(), "status");
if (statusObj != null && statusObj.toString().equals("running")) {
@ -128,7 +128,7 @@ public class ScenarioTaskServiceImpl extends
responseCmdInfo.setScenarioId(currentScenario.getId());
responseCmdInfo.setRoom(roomId);
JSONArray weatherMsgArray = new JSONArray();
for(WeatherResource weatherResource: weatherResourceList) {
for (WeatherResource weatherResource : weatherResourceList) {
JSONObject jsonObject = new JSONObject();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
jsonObject.putOnce("begTime", dtf.format(weatherResource.getLastBegTime()));
@ -138,8 +138,8 @@ public class ScenarioTaskServiceImpl extends
}
responseCmdInfo.setData(weatherMsgArray);
Global.sendCmdInfoQueue.add(responseCmdInfo);
}catch (Exception ex){
ex.printStackTrace();
} catch (Exception ex) {
log.error(ex.getMessage());
}
@ -147,10 +147,35 @@ public class ScenarioTaskServiceImpl extends
}
private void taskTrigger(Scenario currentScenario, String roomId) {
Object statusObj = redisUtil.hget(roomId + "_" + currentScenario.getId(), "status");
if (statusObj != null && statusObj.toString().equals("running")) {
Object taskListObj = redisUtil.hget(roomId + "_" + currentScenario.getId(), "taskList");
if (taskListObj != null) {
}
private void supplierChangeUseUp(Scenario currentScenario, String roomId) {
if (taskListObj instanceof List<?>) {
List<?> taskList = (List<?>) taskListObj;
for (Object task : taskList) {
ScenarioTask scenarioTask = (ScenarioTask) task;
switch (scenarioTask.getTaskType()) {
case "1":
taskLogicService.handleMoveTask(scenarioTask, currentScenario, roomId,18.0,null);
break;
case "2":
taskLogicService.handleBattleTask(scenarioTask, currentScenario, roomId);
break;
case "4":
case "5":
case "6":
case "7":
default:
taskLogicService.supplierTask(scenarioTask, currentScenario, roomId);
}
}
}
}
}
}
@ -158,7 +183,7 @@ public class ScenarioTaskServiceImpl extends
public List<ScenarioTask> queryTaskList(ScenarioTask task) {
QueryWrapper<ScenarioTask> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("scenario_id", task.getScenarioId());
if(StringUtils.isNotBlank(task.getResourceId())){
if (StringUtils.isNotBlank(task.getResourceId())) {
queryWrapper.eq("resource_id", task.getResourceId());
}
return this.list(queryWrapper);

View File

@ -1,9 +1,23 @@
package com.hivekion.scenario.service.impl;
import com.alibaba.fastjson2.JSON;
import com.hivekion.Global;
import com.hivekion.baseData.entity.Scenario;
import com.hivekion.common.MultiPointGeoPosition;
import com.hivekion.common.MultiPointGeoPosition.PositionResult;
import com.hivekion.common.entity.ResponseCmdInfo;
import com.hivekion.common.redis.RedisUtil;
import com.hivekion.scenario.TaskFinishedCall;
import com.hivekion.scenario.entity.ScenarioTask;
import com.hivekion.scenario.service.TaskLogicService;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;
/**
* [类的简要说明]
@ -17,9 +31,82 @@ import org.springframework.stereotype.Service;
@Service
public class TaskLogicServiceImpl implements TaskLogicService {
@Override
public void handleMoveTask(ScenarioTask task, Scenario scenario, String roomId) {
@Resource
private RedisUtil redisUtil;
@Value("${path.planning.url}")
private String pathPlanningUrl;
private final WebClient webClient = WebClient.create();
@Override
public void handleMoveTask(ScenarioTask scenarioTask, Scenario currentScenario, String roomId,
double speed, TaskFinishedCall call) {
ResponseCmdInfo<Map<String, Object>> cmdInfo = new ResponseCmdInfo<>();
Map<String, Object> dataMap = new HashMap<>();
cmdInfo.setData(dataMap);
dataMap.put("resourceId", scenarioTask.getResourceId());
if (!"running".equals(scenarioTask.getStatus())) {
scenarioTask.setStatus("running");
String url = pathPlanningUrl + "?profile=car&point=" + scenarioTask.getFromLat() + ","
+ scenarioTask.getFromLng()
+ "&point=" + scenarioTask.getToLat() + "," + scenarioTask.getToLng()
+ "&points_encoded=false&algorithm=alternative_route&alternative_route.max_paths=3";
String result = webClient.get()
.uri(url)
.retrieve()
.bodyToMono(String.class)
.block();
com.alibaba.fastjson2.JSONObject resultObject = JSON.parseObject(result);
if (resultObject != null) {
cmdInfo.setCmdType("init_path_planning");
cmdInfo.setScenarioId(scenarioTask.getScenarioId());
cmdInfo.setRoom(roomId);
dataMap.put("points", resultObject);
redisUtil.hset(roomId + "_" + currentScenario.getId(),
scenarioTask.getId() + "_path_points", resultObject.getJSONArray("paths"));
}
} else {//更新坐标
List<double[]> points = new ArrayList<>();
cmdInfo.setCmdType("current_position");
Object pathsObj = redisUtil.hget(roomId + "_" + currentScenario.getId(),
scenarioTask.getId() + "_path_points");
if (pathsObj != null) {
com.alibaba.fastjson2.JSONArray paths = (com.alibaba.fastjson2.JSONArray) pathsObj;
com.alibaba.fastjson2.JSONObject jsonObject = (com.alibaba.fastjson2.JSONObject) paths.get(
0);
com.alibaba.fastjson2.JSONArray pointsArray = jsonObject.getJSONObject("paths")
.getJSONObject("points").getJSONArray("coordinates");
for (int i = 0; i < pointsArray.size(); i++) {
com.alibaba.fastjson2.JSONArray coordinateArray = pointsArray.getJSONArray(i);
double[] data = new double[coordinateArray.size()];
for (int j = 0; j < coordinateArray.size(); j++) {
data[j] = coordinateArray.getDouble(j);
}
points.add(data);
}
}
//查看当前想定持续的时间
Object duringObj = redisUtil.hget(roomId + "_" + currentScenario.getId(),
"duringTime");
if (duringObj != null) {
int oldValue = duringObj instanceof Integer ? (Integer) duringObj : 0;
PositionResult result = MultiPointGeoPosition.getPosition(points, speed,
oldValue);
dataMap.put("currentPosition", result);
if (result.reached) {
if(call!=null){
call.doneTask();
}
}
}
}
Global.sendCmdInfoQueue.add(cmdInfo);
}
@Override
@ -27,13 +114,15 @@ public class TaskLogicServiceImpl implements TaskLogicService {
}
@Override
public void restTask(ScenarioTask task, Scenario scenario, String roomId) {
}
@Override
public void supplierTask(ScenarioTask task, Scenario scenario, String roomId) {
//运20速度
handleMoveTask(task, scenario, roomId, 217,()->{
//更新想定的物资
});
}
}

View File

@ -78,11 +78,11 @@ public class WsServer {
@OnMessage
public void onMessage(String message, Session session, @PathParam("room") String room,
@PathParam("scenarioId") String scenarioId) {
@PathParam("scenarioId") Integer scenarioId) {
try {
log.info("onMessage::room: {}, message: {}", room, message);
RequestCmdInfo requestCmdInfo = new RequestCmdInfo();
requestCmdInfo.setScenarioId(Integer.parseInt(scenarioId));
requestCmdInfo.setScenarioId((scenarioId));
requestCmdInfo.setRoom(room);
requestCmdInfo.setMessage(message);
Global.receiveCmdInfoQueue.add(requestCmdInfo);

View File

@ -44,3 +44,5 @@ get.all.user = http://127.0.0.1/oauth2Server/api/outside/syncUserAll
#get.all.dept=http://127.0.0.1/oatuh2Server/api/outside/synDeptAll
logout.url=http://127.0.0.1:99/oauth2Server/oauth2/logout
path.planning.url=http://192.168.0.53:8989/route

View File

@ -1,35 +0,0 @@
spring.datasource.dynamic.primary=mysql
spring.datasource.dynamic.strict=false
spring.datasource.dynamic.datasource.mysql.url=jdbc:mysql://127.0.0.1:3308/surportdb?allowPublicKeyRetrieval=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghai
spring.datasource.dynamic.datasource.mysql.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.dynamic.datasource.mysql.username=root
spring.datasource.dynamic.datasource.mysql.password=123456
#com.mysql.cj.jdbc.Driver
#insert into sys_user(user_name,email,password,status,id)value ('admin','aaaa@123.com','06c2754c5d9989201e0eef0f3744abe4',0,1)
spring.redis.database=0
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.jedis.pool.max-idle=10
#spring.redis.password=123
spring.redis.timeout=5000
server.port=8099
actable.table.auto=update
actable.model.pack=com.hivekion.domain;com.hivekion.system.domain;
actable.database.type=mysql
uploadPath.temporary=C:/Users/sutao/Desktop/????/tes
uploadPath.projectfile=/Volumes/HD/ProjectFile
importFile.3D=E:/AutoPublish/projectmanage/java/basedatamanage_service/3Dmodel/
spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${importFile.3D}
uploadPath = D:/code/area
uploadPath.file=D:/file
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB
mybatis-plus.mapper-locations=classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml,classpath*:/mapper/**/*.xml
mybatis-plus.configuration.map-underscore-to-camel-case=false
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.configuration.database-id=mysql
user.default.password=1q2w3E*
user.default.failsCount=5

View File

@ -1,35 +0,0 @@
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/pro_xby?useSSL=false&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghai
##spring.datasource.url=jdbc:mysql://192.168.75.177:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT
#spring.datasource.username=root
#spring.datasource.password=root
spring.datasource.dynamic.primary=mysql
spring.datasource.dynamic.strict=false
spring.datasource.dynamic.datasource.mysql.url=jdbc:mysql://192.168.0.160:3306/xby_pro?useSSL=false&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghai
spring.datasource.dynamic.datasource.mysql.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.mysql.username=root
spring.datasource.dynamic.datasource.mysql.password=123456
spring.datasource.dynamic.datasource.sqlserver.url=jdbc:sqlserver://180.76.174.106:1433;DatabaseName=xingboyuan
spring.datasource.dynamic.datasource.sqlserver.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.dynamic.datasource.sqlserver.username=sq1
spring.datasource.dynamic.datasource.sqlserver.password=As123123
spring.redis.database=0
spring.redis.host=192.168.0.160
spring.redis.port=6379
spring.redis.jedis.pool.max-idle=10
#spring.redis.password=
spring.redis.timeout=5000
server.port=9086
actable.table.auto=update
actable.model.pack=com.hivekion.domain;com.hivekion.*.domain;
actable.database.type=mysql
uploadPath.temporary=/usr/local/temporary
uploadPath.projectfile=/usr/local/ProjectFile
#uploadPath.temporary=E:/AutoPublish/projectmanage/java/xingboyuan/temporary
#uploadPath.projectfile=E:/AutoPublish/projectmanage/java/xingboyuan/ProjectFile
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB
mybatis-plus.mapper-locations=classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml
mybatis-plus.configuration.map-underscore-to-camel-case=true
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
user.default.password=1q2w3E*

View File

@ -1,46 +0,0 @@
spring.datasource.dynamic.primary=dm
spring.datasource.dynamic.strict=false
spring.datasource.dynamic.datasource.dm.url=jdbc:dm://192.168.0.53:5236/SIMULATION
spring.datasource.dynamic.datasource.dm.driver-class-name=dm.jdbc.driver.DmDriver
spring.datasource.dynamic.datasource.dm.username=simulation
spring.datasource.dynamic.datasource.dm.password=Simulation001
spring.redis.database=0
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.jedis.pool.max-idle=10
#spring.redis.password=123
spring.redis.timeout=5000
server.port=8099
actable.table.auto=update
actable.model.pack=com.hivekion.domain;com.hivekion.system.domain;
actable.database.type=mysql
uploadPath.temporary=C:/Users/sutao/Desktop/????/tes
uploadPath.projectfile=/Volumes/HD/ProjectFile
importFile.3D=E:/AutoPublish/projectmanage/java/basedatamanage_service/3Dmodel/
spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${importFile.3D}
uploadPath = D:/code/area
uploadPath.file=D:/file
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB
mybatis-plus.mapper-locations=classpath*:/mapper/**/*.xml
mybatis-plus.configuration.map-underscore-to-camel-case=false
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.configuration.database-id=dm
user.default.password=1q2w3E*
user.default.failsCount=5
## next is about the third login
third.app.id=hello
third.app.secret=hello
#get.code.url= http://32.15.80.150:99/oauth2Server/oauth2/authorizeV2
#app.redirect.url =http://127.0.0.1:8080/redirect
get.token.url = http://127.0.0.1:99/oauth2Server/oauth2/token
#refresh.token.url = http://127.0.0.1/oauth2Server/oauth2/refresh
get.user.url = http://127.0.0.1:99/oauth2Server/oauth2/userinfo
get.all.user = http://127.0.0.1/oauth2Server/api/outside/syncUserAll
#get.all.dept=http://127.0.0.1/oatuh2Server/api/outside/synDeptAll
logout.url=http://127.0.0.1:99/oauth2Server/oauth2/logout

View File

@ -1,2 +0,0 @@
spring.profiles.active=prod
#spring.profiles.active=dev

Some files were not shown because too many files have changed in this diff Show More