查询行为树所属平台的下属

This commit is contained in:
MHW
2026-04-13 16:16:24 +08:00
parent 50c1cc5bf2
commit 0e6b6d9f45
10 changed files with 318 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
package com.solution.system.domain;
import lombok.Data;
/**
* 平台表
*/
@Data
public class Platform {
/**
* 主键
*/
private Integer id;
/**
* 平台名称
*/
private String name;
/**
* 描述
*/
private String description;
/**
* 平台出现在想定上的想定id
*/
private Integer scenarioId;
}

View File

@@ -0,0 +1,40 @@
package com.solution.system.domain;
import lombok.Data;
/**
* 平台通信关系表
*/
@Data
public class PlatformCommunication {
/**
* 主键ID
*/
private Integer id;
/**
* 指挥平台名称/ID
*/
private String commandPlatform;
/**
* 下属平台名称/ID
*/
private String subordinatePlatform;
/**
* 指挥通信方式/内容
*/
private String commandComm;
/**
* 下属通信方式/内容
*/
private String subordinateComm;
/**
* 想定ID
*/
private Integer scenaryId;
}

View File

@@ -0,0 +1,16 @@
package com.solution.system.mapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface PlatformCommunicationMapper {
/**
* 根据平台name获取平台下属英文名
* @param name
* @return
*/
List<String> getUnderlingBytreeId(String name);
}

View File

@@ -0,0 +1,24 @@
package com.solution.system.mapper;
import com.solution.system.domain.Platform;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface PlatformMapper {
/**
* 根据行为树id获取行为树所属平台
* @param id
* @return
*/
Platform getPlatformByTreeId(Long id);
/**
* 根据下属平台英文名获取中文名返回
* @param underlingEnglishName
* @return
*/
List<String> selectPlatformChineseName(List<String> underlingEnglishName);
}

View File

@@ -62,4 +62,11 @@ public interface IBehaviortreeService
* @return 结果
*/
public int deleteBehaviortreeById(Long id);
/**
* 根据行为树id获取该行为树的下属
* @param treeId
* @return
*/
List<String> getUnderling(Integer treeId);
}

View File

@@ -2,8 +2,12 @@ package com.solution.system.service.impl;
import java.util.List;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.solution.common.constant.ExceptionConstants;
import com.solution.system.domain.Platform;
import com.solution.system.mapper.PlatformCommunicationMapper;
import com.solution.system.mapper.PlatformMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.solution.system.mapper.BehaviortreeMapper;
@@ -22,6 +26,12 @@ public class BehaviortreeServiceImpl implements IBehaviortreeService
@Autowired
private BehaviortreeMapper behaviortreeMapper;
@Autowired
private PlatformCommunicationMapper platformCommunicationMapper;
@Autowired
private PlatformMapper platformMapper;
@Override
public Behaviortree findOneByPlatformId(Integer platformId)
{
@@ -99,4 +109,30 @@ public class BehaviortreeServiceImpl implements IBehaviortreeService
{
return behaviortreeMapper.deleteBehaviortreeById(id);
}
/**
* 根据行为树id获取该行为树的下属
* @param treeId
* @return
*/
@Override
public List<String> getUnderling(Integer treeId) {
if(null == treeId){
throw new RuntimeException(ExceptionConstants.PARAMETER_EXCEPTION);
}
Behaviortree behaviortree = behaviortreeMapper.selectBehaviortreeById(Long.valueOf(treeId));
if(ObjectUtil.isEmpty(behaviortree) && null == behaviortree.getId()){
throw new RuntimeException(ExceptionConstants.PARAMETER_EXCEPTION);
}
//根据行为树id获取行为树所属平台
Platform platform = platformMapper.getPlatformByTreeId(behaviortree.getId());
//根据平台name获取平台下属英文名
List<String> underlingEnglishName = platformCommunicationMapper.getUnderlingBytreeId(platform.getName());
//根据下属平台英文名获取中文名返回
List<String> underlingChineseName = platformMapper.selectPlatformChineseName(underlingEnglishName);
if(CollUtil.isEmpty(underlingChineseName)){
throw new RuntimeException("该平台暂无下属");
}
return underlingChineseName;
}
}

View File

@@ -0,0 +1,13 @@
<?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.solution.system.mapper.PlatformCommunicationMapper">
<select id="getUnderlingBytreeId" resultType="java.lang.String" parameterType="java.lang.Integer">
SELECT subordinate_platform
FROM platform_communication
WHERE subordinate_platform = #{name}
</select>
</mapper>

View File

@@ -0,0 +1,23 @@
<?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.solution.system.mapper.PlatformMapper">
<select id="getPlatformByTreeId" resultType="com.solution.system.domain.Platform"
parameterType="java.lang.Long">
SELECT id , name , description, scenario_id
FROM platform
WHERE id = #{id}
</select>
<select id="selectPlatformChineseName" resultType="java.lang.String"
parameterType="java.util.List&lt;java.lang.String&gt;">
SELECT description
FROM platform
WHERE name IN
<foreach item="item" collection="underlingEnglishName" open="(" separator="," close=")">
#{item}
</foreach>
</select>
</mapper>