diff --git a/auto-solution-scene/src/main/java/com/solution/scene/controller/SceneController.java b/auto-solution-admin/src/main/java/com/solution/web/controller/scene/SceneController.java
similarity index 96%
rename from auto-solution-scene/src/main/java/com/solution/scene/controller/SceneController.java
rename to auto-solution-admin/src/main/java/com/solution/web/controller/scene/SceneController.java
index 5825964..aacdd55 100644
--- a/auto-solution-scene/src/main/java/com/solution/scene/controller/SceneController.java
+++ b/auto-solution-admin/src/main/java/com/solution/web/controller/scene/SceneController.java
@@ -1,4 +1,4 @@
-package com.solution.scene.controller;
+package com.solution.web.controller.scene;
import com.solution.common.annotation.Log;
import com.solution.common.core.controller.BaseController;
@@ -33,7 +33,7 @@ public class SceneController extends BaseController {
@ApiOperation("保存场景配置")
@PostMapping("/saveSceneConfig")
@Log(title = "行为树主", businessType = BusinessType.INSERT)
- public AjaxResult saveSceneConfig(@RequestBody AfsimScenarioForm afsimScenario)
+ public AjaxResult saveSceneConfig(@RequestBody AfsimScenario afsimScenario)
{
return toAjax(sceneService.saveOrUpdate(afsimScenario));
}
diff --git a/auto-solution-common/pom.xml b/auto-solution-common/pom.xml
index 0b387a9..402b1e4 100644
--- a/auto-solution-common/pom.xml
+++ b/auto-solution-common/pom.xml
@@ -113,6 +113,12 @@
javax.servlet-api
+
+ org.projectlombok
+ lombok
+ 1.18.34
+
+
cn.hutool
hutool-all
diff --git a/auto-solution-common/src/main/java/com/solution/common/constant/PlatformAndModuleConstants.java b/auto-solution-common/src/main/java/com/solution/common/constant/PlatformAndModuleConstants.java
index 26181cf..ad01ca2 100644
--- a/auto-solution-common/src/main/java/com/solution/common/constant/PlatformAndModuleConstants.java
+++ b/auto-solution-common/src/main/java/com/solution/common/constant/PlatformAndModuleConstants.java
@@ -6,4 +6,6 @@ public class PlatformAndModuleConstants {
public static final String RED_NEBO_M_1 = "red_nebo_m_1";
public static final String RED_NEBO_M_2 = "red_nebo_m_2";
+
+ public static final String RED_TANK_1 = "red_tank_1";
}
diff --git a/auto-solution-rule/pom.xml b/auto-solution-rule/pom.xml
index 33757b0..b0b0238 100644
--- a/auto-solution-rule/pom.xml
+++ b/auto-solution-rule/pom.xml
@@ -24,10 +24,6 @@
solution-common
-
- org.projectlombok
- lombok
-
io.springfox
diff --git a/auto-solution-rule/src/main/java/com/solution/rule/handler/WarplaneHandler.java b/auto-solution-rule/src/main/java/com/solution/rule/handler/WarplaneHandler.java
index 759102f..c921f2a 100644
--- a/auto-solution-rule/src/main/java/com/solution/rule/handler/WarplaneHandler.java
+++ b/auto-solution-rule/src/main/java/com/solution/rule/handler/WarplaneHandler.java
@@ -38,8 +38,6 @@ public class WarplaneHandler extends AbstractRuleChainHandler {
List resultWeapons = new ArrayList<>();
- //TODO获取所有组件以及count
-
Iterator iterator = dtoList.iterator();
while (iterator.hasNext()) {
WeaponModelDTO dto = iterator.next();
diff --git a/auto-solution-scene/pom.xml b/auto-solution-scene/pom.xml
index 842a4ce..a06d4fe 100644
--- a/auto-solution-scene/pom.xml
+++ b/auto-solution-scene/pom.xml
@@ -30,10 +30,6 @@
solution-common
-
- org.projectlombok
- lombok
-
io.springfox
diff --git a/auto-solution-scene/src/main/java/com/solution/scene/domain/AfsimScenario.java b/auto-solution-scene/src/main/java/com/solution/scene/domain/AfsimScenario.java
index 0074f13..535b674 100644
--- a/auto-solution-scene/src/main/java/com/solution/scene/domain/AfsimScenario.java
+++ b/auto-solution-scene/src/main/java/com/solution/scene/domain/AfsimScenario.java
@@ -1,5 +1,7 @@
package com.solution.scene.domain;
+import java.util.List;
+
/**
* 场景配置表
* 对应表 afsim_scenario
@@ -11,6 +13,16 @@ public class AfsimScenario {
private String scenarioPath;
private String communicationGraph; // 用于存储场景中的通讯关系
+ public List getRelations() {
+ return relations;
+ }
+
+ public void setRelations(List relations) {
+ this.relations = relations;
+ }
+
+ private List relations;
+
public Integer getId() {
return id;
}
diff --git a/auto-solution-scene/src/main/java/com/solution/scene/mapper/PlatFormCommunicationMapper.java b/auto-solution-scene/src/main/java/com/solution/scene/mapper/PlatFormCommunicationMapper.java
new file mode 100644
index 0000000..71e6aac
--- /dev/null
+++ b/auto-solution-scene/src/main/java/com/solution/scene/mapper/PlatFormCommunicationMapper.java
@@ -0,0 +1,27 @@
+package com.solution.scene.mapper;
+
+import com.solution.scene.domain.AfsimScenarioForm;
+import com.solution.scene.domain.ScenarioRelation;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface PlatFormCommunicationMapper {
+
+ /**
+ * 存储通信关系
+ * @param scenaryId,afsimScenarios
+ */
+ int insert(@Param("scenaryId") Integer scenaryId,
+ @Param("afsimScenarios") List afsimScenarios);
+
+
+ /**
+ * 删除通信关系
+ * @param scenaryId
+ * @return
+ */
+ int delete(Integer scenaryId);
+}
diff --git a/auto-solution-scene/src/main/java/com/solution/scene/mapper/SceneMapper.java b/auto-solution-scene/src/main/java/com/solution/scene/mapper/SceneMapper.java
index 03bec24..d1c2569 100644
--- a/auto-solution-scene/src/main/java/com/solution/scene/mapper/SceneMapper.java
+++ b/auto-solution-scene/src/main/java/com/solution/scene/mapper/SceneMapper.java
@@ -14,9 +14,9 @@ public interface SceneMapper {
* @param afsimScenario
* @return
*/
- int insert(AfsimScenarioForm afsimScenario);
+ int insert(AfsimScenario afsimScenario);
- int update(AfsimScenarioForm afsimScenario);
+ int update(AfsimScenario afsimScenario);
/**
diff --git a/auto-solution-scene/src/main/java/com/solution/scene/service/SceneService.java b/auto-solution-scene/src/main/java/com/solution/scene/service/SceneService.java
index 15a4933..ea06aad 100644
--- a/auto-solution-scene/src/main/java/com/solution/scene/service/SceneService.java
+++ b/auto-solution-scene/src/main/java/com/solution/scene/service/SceneService.java
@@ -12,11 +12,11 @@ public interface SceneService {
* @param afsimScenario
* @return
*/
- int insert(AfsimScenarioForm afsimScenario);
+ int insert(AfsimScenario afsimScenario);
int update(AfsimScenarioForm afsimScenario);
- int saveOrUpdate(AfsimScenarioForm afsimScenario);
+ int saveOrUpdate(AfsimScenario afsimScenario);
/**
* 获取场景列表
diff --git a/auto-solution-scene/src/main/java/com/solution/scene/service/impl/SceneServiceImpl.java b/auto-solution-scene/src/main/java/com/solution/scene/service/impl/SceneServiceImpl.java
index 75deac0..7669444 100644
--- a/auto-solution-scene/src/main/java/com/solution/scene/service/impl/SceneServiceImpl.java
+++ b/auto-solution-scene/src/main/java/com/solution/scene/service/impl/SceneServiceImpl.java
@@ -2,10 +2,12 @@ package com.solution.scene.service.impl;
import com.solution.scene.domain.AfsimScenario;
import com.solution.scene.domain.AfsimScenarioForm;
+import com.solution.scene.mapper.PlatFormCommunicationMapper;
import com.solution.scene.mapper.SceneMapper;
import com.solution.scene.service.SceneService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -16,8 +18,11 @@ public class SceneServiceImpl implements SceneService {
@Autowired
private SceneMapper sceneMapper;
+ @Autowired
+ private PlatFormCommunicationMapper platFormCommunicationMapper;
+
@Override
- public int insert(AfsimScenarioForm afsimScenario) {
+ public int insert(AfsimScenario afsimScenario) {
return sceneMapper.insert(afsimScenario);
}
@@ -26,12 +31,29 @@ public class SceneServiceImpl implements SceneService {
return sceneMapper.update(afsimScenario);
}
+ @Transactional(rollbackFor = Exception.class)
@Override
- public int saveOrUpdate(AfsimScenarioForm afsimScenario) {
+ public int saveOrUpdate(AfsimScenario afsimScenario) {
if (null != afsimScenario.getId() && afsimScenario.getId() > 0) {
- return sceneMapper.update(afsimScenario);
+ // 更新场景
+ int updated = sceneMapper.update(afsimScenario);
+ // 先删除通信关系
+ platFormCommunicationMapper.delete(afsimScenario.getId());
+ // 再插入通信关系
+ if (afsimScenario.getRelations() != null && !afsimScenario.getRelations().isEmpty()) {
+ platFormCommunicationMapper.insert(afsimScenario.getId(), afsimScenario.getRelations());
+ }
+ return updated;
+ } else {
+ // 新增场景
+ int inserted = sceneMapper.insert(afsimScenario);
+ // 确保获取到生成的 ID
+ if (afsimScenario.getId() != null && afsimScenario.getRelations() != null && !afsimScenario.getRelations().isEmpty()) {
+ // 存储通信关系
+ platFormCommunicationMapper.insert(afsimScenario.getId(), afsimScenario.getRelations());
+ }
+ return inserted;
}
- return insert(afsimScenario);
}
/**
diff --git a/auto-solution-scene/src/main/resources/mapper/scene/PlatFormCommunicationMapper.xml b/auto-solution-scene/src/main/resources/mapper/scene/PlatFormCommunicationMapper.xml
new file mode 100644
index 0000000..d745257
--- /dev/null
+++ b/auto-solution-scene/src/main/resources/mapper/scene/PlatFormCommunicationMapper.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+ INSERT INTO platform_communication (scenary_id, command_platform, subordinate_platform, command_comm, subordinate_comm)
+ VALUES
+
+ (#{scenaryId}, #{item.sourcePlatform.name}, #{item.targetPlatform.name}, #{item.sourceComponent.name}, #{item.targetComponent.name})
+
+
+
+ DELETE FROM platform_communication
+ WHERE scenary_id = #{scenaryId}
+
+
\ No newline at end of file
diff --git a/auto-solution-scene/src/main/resources/mapper/scene/SceneMapper.xml b/auto-solution-scene/src/main/resources/mapper/scene/SceneMapper.xml
index b21489a..9044c61 100644
--- a/auto-solution-scene/src/main/resources/mapper/scene/SceneMapper.xml
+++ b/auto-solution-scene/src/main/resources/mapper/scene/SceneMapper.xml
@@ -12,7 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-
+
INSERT INTO afsim_scenario (name, description, scenario_path, communication_graph)
VALUES (#{name}, #{description}, #{scenarioPath}, #{communicationGraph})
diff --git a/modeler/src/style.less b/modeler/src/style.less
index 48e7e4c..ad463ef 100644
--- a/modeler/src/style.less
+++ b/modeler/src/style.less
@@ -1291,6 +1291,10 @@
}
}
+.ant-select:not(.ant-select-customize-input) .ant-select-selector{
+ border: 1px solid #475f71
+}
+
.ant-input-affix-wrapper.ant-input-password input:-webkit-autofill,
.ant-input-affix-wrapper.ant-input-password input:-webkit-autofill:hover,
.ant-input-affix-wrapper.ant-input-password input:-webkit-autofill:focus,
@@ -1504,9 +1508,7 @@
border-inline-end-width: 1px;
}
}
-.ant-select:not(.ant-select-customize-input) .ant-select-selector{
- border: 1px solid #2c2a2a;
-}
+
.ant-select .ant-select-selection-placeholder,
.ant-select .ant-select-selection-search-input{
background: transparent
diff --git a/modeler/src/views/decision/algorithm/management.vue b/modeler/src/views/decision/algorithm/management.vue
index d47e326..193ec07 100644
--- a/modeler/src/views/decision/algorithm/management.vue
+++ b/modeler/src/views/decision/algorithm/management.vue
@@ -274,8 +274,11 @@ const getAlgorithmTypeName = (type: NullableString): NullableString => {
const load = () => {
algorithms.value = [];
algorithmsTotal.value = 0;
- formRef.value?.resetFields();
- selectedAlgorithm.value = resolveItem(defaultAlgorithm);
+
+ if(selectedAlgorithm.value.id <= 0){
+ formRef.value?.resetFields();
+ selectedAlgorithm.value = resolveItem(defaultAlgorithm);
+ }
findAlgorithmsByQuery(query.value).then(r => {
algorithms.value = r.rows ?? [];
diff --git a/modeler/src/views/decision/rule/PlatformSelect.vue b/modeler/src/views/decision/rule/PlatformSelect.vue
index 5aa60af..0b3ddb6 100644
--- a/modeler/src/views/decision/rule/PlatformSelect.vue
+++ b/modeler/src/views/decision/rule/PlatformSelect.vue
@@ -3,12 +3,13 @@
{{ item.description || item.name || '未命名平台' }}
@@ -18,13 +19,13 @@
{{ item.description || item.name || '未命名组件' }}
@@ -34,135 +35,84 @@
\ No newline at end of file
diff --git a/modeler/src/views/decision/rule/management.vue b/modeler/src/views/decision/rule/management.vue
index 24d54ad..c802453 100644
--- a/modeler/src/views/decision/rule/management.vue
+++ b/modeler/src/views/decision/rule/management.vue
@@ -32,9 +32,7 @@