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/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/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/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..59102b2 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,30 @@ public class SceneServiceImpl implements SceneService { return sceneMapper.update(afsimScenario); } + @Transactional(rollbackFor = Exception.class) @Override - public int saveOrUpdate(AfsimScenarioForm afsimScenario) { + public int saveOrUpdate(AfsimScenario afsimScenario) { + //TODO 报错待修改 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..1be0f29 --- /dev/null +++ b/auto-solution-scene/src/main/resources/mapper/scene/PlatFormCommunicationMapper.xml @@ -0,0 +1,20 @@ + + + + + + + INSERT INTO platform_communication (scenary_id, command_platform, subordinate_platform, command_comm, subordinate_comm) + VALUES + + (#{scenaryId}, #{item.sourcePlatform}, #{item.targetPlatform}, #{item.sourceComponent}, #{item.targetComponent}) + + + + + 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})