a-tuoheng-airline/src/main/java/com/ruoyi/airline/service/impl/AirlineAreaGroupServiceImpl...

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;
}
}