添加默认分组逻辑

This commit is contained in:
孙小云 2026-01-27 11:44:39 +08:00
parent 53f085032c
commit 46b0d9614e
1 changed files with 75 additions and 5 deletions

View File

@ -60,6 +60,12 @@ public class SynService {
@Autowired
private IAircraftPayloadDomain aircraftPayloadDomain;
@Autowired
private IGroupDomain groupDomain;
@Autowired
private IDockGroupDomain dockGroupDomain;
public SynService(IThingsBoardDomain iThingsBoardDomain) {
this.iThingsBoardDomain = iThingsBoardDomain;
}
@ -346,6 +352,10 @@ public class SynService {
/**
* 同步机场数据
* 逻辑
* 1. 如果是新插入的机场需要将其插入到默认分组ID=0
* 2. 如果默认分组不存在需要先创建默认分组
* 3. 如果是已存在的机场检查机场是否在任何分组中如果不在将其插入默认分组
*
* @param deviceId 设备主键ID
* @param deviceName 设备名称
@ -355,8 +365,10 @@ public class SynService {
// 查询机场是否已存在
Dock existingDock = dockDomain.selectDockByDeviceId(deviceId);
boolean isNewDock = (existingDock == null);
Long dockId;
if (existingDock == null) {
if (isNewDock) {
// 机场不存在插入新机场
Dock newDock = new Dock();
newDock.setDockName(deviceName);
@ -365,12 +377,26 @@ public class SynService {
log.info("准备插入新机场: deviceId={}, dockName={}", deviceId, deviceName);
dockDomain.insertDock(newDock);
dockId = newDock.getDockId();
log.info("插入新机场成功: deviceId={}, dockName={}, dockId={}",
deviceId, deviceName, newDock.getDockId());
deviceId, deviceName, dockId);
} else {
log.info("机场已存在,跳过插入: deviceId={}, dockName={}", deviceId, deviceName);
dockId = existingDock.getDockId();
log.info("机场已存在: deviceId={}, dockName={}, dockId={}", deviceId, deviceName, dockId);
}
// 确保默认分组存在
ensureDefaultGroupExists();
// 检查机场是否在任何分组中
List<DockGroup> dockGroups = dockGroupDomain.selectDockGroupByDockId(dockId);
if (dockGroups == null || dockGroups.isEmpty()) {
// 机场不在任何分组中将其插入默认分组
insertDockToDefaultGroup(dockId, deviceName);
} else {
log.info("机场已在分组中: dockId={}, 分组数量={}", dockId, dockGroups.size());
}
// 机场已存在无需更新
}
/**
@ -570,8 +596,52 @@ public class SynService {
existingRelation.setAircraftId(aircraftId);
existingRelation.setUpdateBy("system");
dockAircraftDomain.updateDockAircraft(existingRelation);
log.info("更新机场无人机关联: dockId={}, aircraftId={}", dockId, aircraftId);
log.info("更新机场无人机关联: dockId=, aircraftId={}", dockId, aircraftId);
}
}
}
/**
* 确保默认分组存在
* 默认分组ID为0名称为"默认分组"
* 如果不存在则创建
*/
private void ensureDefaultGroupExists() {
Long defaultGroupId = 0L;
Group defaultGroup = groupDomain.selectGroupByGroupId(defaultGroupId);
if (defaultGroup == null) {
// 默认分组不存在创建默认分组
Group newGroup = new Group();
newGroup.setGroupId(defaultGroupId);
newGroup.setGroupName("默认分组");
newGroup.setCreateBy("system");
newGroup.setRemark("系统自动创建的默认分组,用于存放未分组的机场");
groupDomain.insertGroup(newGroup);
log.info("创建默认分组成功: groupId={}, groupName={}", defaultGroupId, "默认分组");
} else {
log.debug("默认分组已存在: groupId={}, groupName={}", defaultGroupId, defaultGroup.getGroupName());
}
}
/**
* 将机场插入到默认分组
*
* @param dockId 机场主键ID
* @param dockName 机场名称用于日志
*/
private void insertDockToDefaultGroup(Long dockId, String dockName) {
Long defaultGroupId = 0L;
DockGroup newDockGroup = new DockGroup();
newDockGroup.setDockId(dockId);
newDockGroup.setGroupId(defaultGroupId);
newDockGroup.setCreateBy("system");
newDockGroup.setRemark("系统自动添加到默认分组");
dockGroupDomain.insertDockGroup(newDockGroup);
log.info("将机场添加到默认分组: dockId={}, dockName={}, groupId={}",
dockId, dockName, defaultGroupId);
}
}