237 lines
9.8 KiB
Java
237 lines
9.8 KiB
Java
package com.ruoyi.airline.service.impl;
|
|
|
|
import com.alibaba.nacos.client.naming.utils.CollectionUtils;
|
|
import com.ruoyi.airline.domain.api.IAirlineAreaDomain;
|
|
import com.ruoyi.airline.domain.api.IAirlineAreaGroupDomain;
|
|
import com.ruoyi.airline.domain.api.IAirlineAreaGroupInfoDomain;
|
|
import com.ruoyi.airline.domain.model.AirlineArea;
|
|
import com.ruoyi.airline.domain.model.AirlineAreaGroup;
|
|
import com.ruoyi.airline.domain.model.AirlineAreaGroupInfo;
|
|
import com.ruoyi.airline.service.api.IAirlineAreaGroupService;
|
|
import com.ruoyi.airline.service.api.IAirlineAreaTimeRuleService;
|
|
import com.ruoyi.airline.service.convert.AirlineAreaGroupInfoServiceConvert;
|
|
import com.ruoyi.airline.service.convert.AirlineAreaGroupServiceConvert;
|
|
import com.ruoyi.airline.service.convert.AirlineAreaServiceConvert;
|
|
import com.ruoyi.airline.service.dto.AirlineAreaDTO;
|
|
import com.ruoyi.airline.service.dto.AirlineAreaGroupDTO;
|
|
import com.ruoyi.airline.service.dto.AirlineAreaGroupInfoDTO;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 空域分组Service实现类
|
|
*
|
|
* @author ruoyi
|
|
* @date 2026-02-25
|
|
*/
|
|
@Service
|
|
public class AirlineAreaGroupServiceImpl implements IAirlineAreaGroupService {
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(AirlineAreaGroupServiceImpl.class);
|
|
|
|
@Autowired
|
|
private IAirlineAreaGroupDomain iAirlineAreaGroupDomain;
|
|
|
|
@Autowired
|
|
private IAirlineAreaGroupInfoDomain iAirlineAreaGroupInfoDomain;
|
|
|
|
@Autowired
|
|
private IAirlineAreaDomain iAirlineAreaDomain;
|
|
|
|
@Autowired
|
|
private IAirlineAreaTimeRuleService iAirlineAreaTimeRuleService;
|
|
|
|
@Override
|
|
public int deletegroupById(Long userId, Long groupId) {
|
|
// 1、删除空域分组明细
|
|
AirlineAreaGroupInfoDTO dto = new AirlineAreaGroupInfoDTO();
|
|
dto.setGroupId(groupId);
|
|
AirlineAreaGroupInfo model = AirlineAreaGroupInfoServiceConvert.to(dto);
|
|
iAirlineAreaGroupInfoDomain.deleteGroupInfo(model);
|
|
|
|
// 2、删除分组
|
|
AirlineAreaGroup model2 = new AirlineAreaGroup();
|
|
model2.setGroupId(groupId);
|
|
model2.setUserId(userId);
|
|
return iAirlineAreaGroupDomain.deletegroup(model2);
|
|
}
|
|
|
|
@Override
|
|
public boolean checkGroupNameUnique(AirlineAreaGroupDTO group) {
|
|
AirlineAreaGroup model = AirlineAreaGroupServiceConvert.to(group);
|
|
return iAirlineAreaGroupDomain.checkgroupNameUnique(model);
|
|
}
|
|
|
|
@Override
|
|
public int updateGroup(AirlineAreaGroupDTO group) {
|
|
AirlineAreaGroup model = AirlineAreaGroupServiceConvert.to(group);
|
|
return iAirlineAreaGroupDomain.updateGroup(model);
|
|
}
|
|
|
|
@Override
|
|
public int insertGroup(AirlineAreaGroupDTO group) {
|
|
AirlineAreaGroup model = AirlineAreaGroupServiceConvert.to(group);
|
|
return iAirlineAreaGroupDomain.insertGroup(model);
|
|
}
|
|
|
|
@Override
|
|
public List<AirlineAreaGroupDTO> selectGroupList(AirlineAreaGroupDTO dto) {
|
|
AirlineAreaGroup model = AirlineAreaGroupServiceConvert.to(dto);
|
|
return AirlineAreaGroupServiceConvert.fromList(iAirlineAreaGroupDomain.selectGroupList(model));
|
|
}
|
|
|
|
// @Override
|
|
// public AirlineAreaGroupDTO selectAirLineListsByGroupId(Long userId, Long groupId) {
|
|
// AirlineAreaGroupDTO dto = new AirlineAreaGroupDTO();
|
|
// dto.setUserId(userId);
|
|
// dto.setGroupId(groupId);
|
|
// List<AirlineAreaGroupInfo> airlineAreaGroupInfoDTOS = iAirlineAreaGroupInfoDomain.selectGroupInfoListById(groupId);
|
|
// if (!CollectionUtils.isEmpty(airlineAreaGroupInfoDTOS)) {
|
|
// List<Long> ids = airlineAreaGroupInfoDTOS.stream().map(AirlineAreaGroupInfo::getAreaId).toList();
|
|
// List<AirlineArea> airlineAreaDTOS = iAirlineAreaDomain.selectAreaListByIds(ids);
|
|
// dto.setGroupInfos(AirlineAreaServiceConvert.fromList(airlineAreaDTOS));
|
|
// }
|
|
// return dto;
|
|
// }
|
|
|
|
// @Override
|
|
// public List<AirlineAreaDTO> selectAirlineListByUserId(AirlineAreaDTO dto) {
|
|
// AirlineArea model = AirlineAreaServiceConvert.to(dto);
|
|
// return AirlineAreaServiceConvert.fromList(iAirlineAreaGroupDomain.selectAirlineListByUserId(model));
|
|
// }
|
|
|
|
@Override
|
|
public AirlineAreaGroupDTO selectAirspaceListByGroupId(Long userId, Long groupId) {
|
|
AirlineAreaGroupDTO dto = new AirlineAreaGroupDTO();
|
|
dto.setUserId(userId);
|
|
dto.setGroupId(groupId);
|
|
List<AirlineAreaGroupInfo> airlineAreaGroupInfoList = iAirlineAreaGroupInfoDomain.selectGroupInfoListById(groupId);
|
|
if (!CollectionUtils.isEmpty(airlineAreaGroupInfoList)) {
|
|
List<Long> ids = airlineAreaGroupInfoList.stream().map(AirlineAreaGroupInfo::getAreaId).toList();
|
|
List<AirlineArea> airlineAreaList = iAirlineAreaDomain.selectAreaListByIds(ids);
|
|
List<AirlineAreaDTO> areaDTOs = AirlineAreaServiceConvert.fromList(airlineAreaList);
|
|
|
|
// 为每个空域添加时间规则
|
|
for (AirlineAreaDTO areaDTO : areaDTOs) {
|
|
List<com.ruoyi.airline.service.dto.AirlineAreaTimeRuleDTO> timeRules = iAirlineAreaTimeRuleService.selectTimeRuleListByAreaId(areaDTO.getId());
|
|
areaDTO.setTimeRules(timeRules);
|
|
}
|
|
|
|
dto.setGroupInfos(areaDTOs);
|
|
}
|
|
return dto;
|
|
}
|
|
|
|
@Override
|
|
public int updateAreaWithPoints(AirlineAreaDTO area) {
|
|
// 1、更新空域信息
|
|
AirlineArea model = AirlineAreaServiceConvert.to(area);
|
|
int result = iAirlineAreaDomain.updateArea(model);
|
|
|
|
// 2、更新时间规则
|
|
if (result > 0 && area.getId() != null) {
|
|
// 删除原有时间规则
|
|
iAirlineAreaTimeRuleService.deleteTimeRuleByAreaId(area.getId());
|
|
// 保存新时间规则
|
|
if (area.getTimeRules() != null && !area.getTimeRules().isEmpty()) {
|
|
iAirlineAreaTimeRuleService.batchInsertTimeRule(area.getId(), area.getTimeRules());
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
@Override
|
|
public int insertAreaWithGroup(Long groupId, AirlineAreaDTO area) {
|
|
// 1、保存空域信息
|
|
AirlineArea model = AirlineAreaServiceConvert.to(area);
|
|
int result = iAirlineAreaDomain.insertArea(model);
|
|
|
|
// 2、保存空域分组信息
|
|
if (result > 0) {
|
|
AirlineAreaGroupInfo groupInfo = new AirlineAreaGroupInfo();
|
|
groupInfo.setGroupId(groupId);
|
|
groupInfo.setAreaId(model.getId());
|
|
groupInfo.setCreateBy(area.getCreateBy());
|
|
groupInfo.setUpdateBy(area.getUpdateBy());
|
|
iAirlineAreaGroupInfoDomain.insertGroupInfo(groupInfo);
|
|
|
|
// 3、保存时间规则
|
|
if (area.getTimeRules() != null && !area.getTimeRules().isEmpty()) {
|
|
iAirlineAreaTimeRuleService.batchInsertTimeRule(model.getId(), area.getTimeRules());
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
@Override
|
|
public int deleteArea(Long areaId) {
|
|
// 1、删除空域分组明细关联
|
|
AirlineAreaGroupInfoDTO dto = new AirlineAreaGroupInfoDTO();
|
|
dto.setAreaId(areaId);
|
|
AirlineAreaGroupInfo model = AirlineAreaGroupInfoServiceConvert.to(dto);
|
|
iAirlineAreaGroupInfoDomain.deleteGroupInfo(model);
|
|
|
|
// 2、删除时间规则 -- 不删除
|
|
// iAirlineAreaTimeRuleService.deleteTimeRuleByAreaId(areaId);
|
|
|
|
// 3、软删除空域
|
|
AirlineArea areaModel = new AirlineArea();
|
|
areaModel.setId(areaId);
|
|
return iAirlineAreaDomain.deleteArea(areaModel);
|
|
}
|
|
|
|
@Override
|
|
public int batchMoveAreaToNewGroup(List<Long> areaIds, Long oldGroupId, Long newGroupId) {
|
|
int movedCount = 0;
|
|
|
|
// 遍历每个空域ID
|
|
for (Long areaId : areaIds) {
|
|
// 1、删除原分组关联
|
|
AirlineAreaGroupInfoDTO deleteDto = new AirlineAreaGroupInfoDTO();
|
|
deleteDto.setGroupId(oldGroupId);
|
|
deleteDto.setAreaId(areaId);
|
|
AirlineAreaGroupInfo deleteModel = AirlineAreaGroupInfoServiceConvert.to(deleteDto);
|
|
iAirlineAreaGroupInfoDomain.deleteGroupInfo(deleteModel);
|
|
|
|
// 2、添加新分组关联
|
|
AirlineAreaGroupInfoDTO insertDto = new AirlineAreaGroupInfoDTO();
|
|
insertDto.setGroupId(newGroupId);
|
|
insertDto.setAreaId(areaId);
|
|
AirlineAreaGroupInfo insertModel = AirlineAreaGroupInfoServiceConvert.to(insertDto);
|
|
int result = iAirlineAreaGroupInfoDomain.insertGroupInfo(insertModel);
|
|
if (result > 0) {
|
|
movedCount++;
|
|
}
|
|
}
|
|
|
|
return movedCount;
|
|
}
|
|
|
|
@Override
|
|
public List<AirlineAreaDTO> selectAreaListByUserId(AirlineAreaDTO dto) {
|
|
log.info("AirlineAreaGroupServiceImpl.selectAreaListByUserId - dto.getName(): {}, dto.getAreaType(): {}, dto.getStatus(): {}",
|
|
dto.getName(), dto.getAreaType(), dto.getStatus());
|
|
|
|
AirlineArea model = AirlineAreaServiceConvert.to(dto);
|
|
|
|
log.info("AirlineAreaGroupServiceImpl.selectAreaListByUserId - model.getName(): {}, model.getAreaType(): {}, model.getStatus(): {}",
|
|
model.getName(), model.getAreaType(), model.getStatus());
|
|
|
|
List<AirlineAreaDTO> areaDTOs = AirlineAreaServiceConvert.fromList(iAirlineAreaDomain.selectAreaListByUserId(model));
|
|
|
|
// 为每个空域添加时间规则
|
|
for (AirlineAreaDTO areaDTO : areaDTOs) {
|
|
List<com.ruoyi.airline.service.dto.AirlineAreaTimeRuleDTO> timeRules = iAirlineAreaTimeRuleService.selectTimeRuleListByAreaId(areaDTO.getId());
|
|
areaDTO.setTimeRules(timeRules);
|
|
}
|
|
|
|
return areaDTOs;
|
|
}
|
|
}
|