package com.ard.route.service.impl; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import com.ard.common.annotation.DataScope; import com.ard.common.utils.DateUtils; import com.ard.common.utils.uuid.IdUtils; import com.ard.route.domain.route.ArdRouteGroup; import com.ard.route.domain.route.ArdRouteInfo; import com.ard.route.domain.vo.ArdRouteGroupVo; import com.ard.route.mapper.ArdRouteGroupMapper; import com.ard.route.mapper.ArdRouteInfoMapper; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ard.route.service.IArdRouteGroupService; import org.springframework.transaction.annotation.Transactional; /** * 文件夹Service业务层处理 * * @author xia * @date 2025-10-18 */ @Service public class ArdRouteGroupServiceImpl implements IArdRouteGroupService { @Autowired private ArdRouteGroupMapper ardRouteGroupMapper; @Autowired private ArdRouteInfoMapper ardRouteInfoMapper; /** * 查询分组 * * @param id 分组主键 * @return 分组 */ @Override public ArdRouteGroup selectArdRouteGroupById(String id) { ArdRouteGroup ardRouteGroup = ardRouteGroupMapper.selectArdRouteGroupById(id); ardRouteGroup.setArdRouteInfoLS(checkRouteData(id)); return ardRouteGroup; } /** * 查询分组列表 * * @param ardRouteGroup 分组 * @return 分组 */ @Override @DataScope(deptAlias = "d", userAlias = "u") public List selectArdRouteGroupList(ArdRouteGroup ardRouteGroup) { List list = ardRouteGroupMapper.selectArdRouteGroupList(ardRouteGroup); for (ArdRouteGroup routeGroup : list) { routeGroup.setArdRouteInfoLS(checkRouteData(routeGroup.getId())); } return list; } // 清空航线数据 private List checkRouteData(String id){ List routeInfos = ardRouteInfoMapper.selectArdRouteInfoByGroupId(id); for (ArdRouteInfo ls : routeInfos) { ls.setRouteData(null); } return routeInfos; } /** * 新增分组 * * @param ardRouteGroup 分组 * @return 结果 */ @Override public int insertArdRouteGroup(ArdRouteGroup ardRouteGroup) { ardRouteGroup.setId(IdUtils.simpleUUID()); ardRouteGroup.setCreateTime(DateUtils.getNowDate()); // 获取当前数据条数 int count = ardRouteGroupMapper.selectArdRouteGroupList(null).size(); ardRouteGroup.setSerialNumber(count + 1); return ardRouteGroupMapper.insertArdRouteGroup(ardRouteGroup); } /** * 修改分组 * * @param ardRouteGroup 分组 * @return 结果 */ @Override public int updateArdRouteGroup(ArdRouteGroup ardRouteGroup) { // 不能修改默认分组 if ("0".equals(ardRouteGroup.getId())) { throw new RuntimeException("不能修改默认分组"); } ardRouteGroup.setUpdateTime(DateUtils.getNowDate()); return ardRouteGroupMapper.updateArdRouteGroup(ardRouteGroup); } /** * 批量删除分组 * * @param ids 需要删除的分组主键 * @return 结果 */ @Override @Transactional(rollbackFor = Exception.class) public Map deleteArdRouteGroupByIds(String[] ids) { // 检查是否包含默认分组,不能删除默认分组 for (String id : ids) { if ("0".equals(id)) { throw new RuntimeException("不能删除默认分组"); } } Map result = new HashMap<>(); try { // 先删除航线信息 int informationCount = ardRouteInfoMapper.deleteRouteInforByGroupIds(ids); result.put("infoCount", informationCount); // 再删除分组 int groupCount = ardRouteGroupMapper.deleteArdRouteGroupByIds(ids); result.put("groupCount", groupCount); return result; } catch (Exception e) { throw e; // 抛出异常让事务回滚 } } /** * 删除分组信息 * * @param id 分组主键 * @return 结果 */ @Override public int deleteArdRouteGroupById(String id) { return ardRouteGroupMapper.deleteArdRouteGroupById(id); } /** * 分组列表 * * @param ardRouteGroup 分组 * @return 分组集合 */ @Override public List selectGroupList(ArdRouteGroup ardRouteGroup) { return ardRouteGroupMapper.selectArdRouteGroupList(ardRouteGroup).stream() .map(entity -> { ArdRouteGroupVo vo = new ArdRouteGroupVo(); BeanUtils.copyProperties(entity, vo); return vo; }) .collect(Collectors.toList()); } }