| package com.zy.acs.manager.manager.service.impl; | 
|   | 
| import com.alibaba.fastjson.JSON; | 
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
| import com.zy.acs.manager.common.exception.BusinessException; | 
| import com.zy.acs.manager.manager.entity.Code; | 
| import com.zy.acs.manager.manager.entity.Route; | 
| import com.zy.acs.manager.manager.mapper.RouteMapper; | 
| import com.zy.acs.manager.manager.service.CodeService; | 
| import com.zy.acs.manager.manager.service.RouteService; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
|   | 
| import java.util.ArrayList; | 
| import java.util.Arrays; | 
| import java.util.List; | 
|   | 
| @Service("routeService") | 
| public class RouteServiceImpl extends ServiceImpl<RouteMapper, Route> implements RouteService { | 
|   | 
|     @Autowired | 
|     private CodeService codeService; | 
|   | 
|     @Override | 
|     public Route createRouteByCode(Code code0, Code code1) { | 
|         Route route = this.findByCodeOfBoth(code0.getId(), code1.getId()); | 
|         if (null == route) { | 
|             route = new Route(); | 
|             route.setUuid(code0.getData()+"-"+code1.getData()); | 
|             route.setStartCode(code0.getId()); | 
|             route.setEndCode(code1.getId()); | 
|             route.setDirection(0); | 
|             route.setCodeArr(JSON.toJSONString(Arrays.asList(code0.getId(), code1.getId()))); | 
|             if (!this.save(route)) { | 
|                 throw new BusinessException(route.getCodeArr()+" save fail![Route]"); | 
|             } | 
|         } | 
|         return route; | 
|     } | 
|   | 
|     @Override | 
|     public List<String> findCodeDataOfSingle(Long code) { | 
|         List<String> neighborCodeList = new ArrayList<>(); | 
|   | 
|         for (Route route : this.list(new LambdaQueryWrapper<Route>().eq(Route::getStartCode, code))) { | 
|             neighborCodeList.add(codeService.getById(route.getEndCode()).getData()); | 
|         } | 
|         for (Route route : this.list(new LambdaQueryWrapper<Route>().eq(Route::getEndCode, code))) { | 
|             neighborCodeList.add(codeService.getById(route.getStartCode()).getData()); | 
|         } | 
|   | 
|         return neighborCodeList; | 
|     } | 
|   | 
|     @Override | 
|     public Route findByCodeOfBoth(Long code0, Long code1) { | 
|         Route route = getOne(new LambdaQueryWrapper<Route>().eq(Route::getStartCode, code0).eq(Route::getEndCode, code1).eq(Route::getStatus, 1)); | 
|         if (null == route) { | 
|             route = getOne(new LambdaQueryWrapper<Route>().eq(Route::getEndCode, code0).eq(Route::getStartCode, code1).eq(Route::getStatus, 1)); | 
|         } | 
|         return route; | 
|     } | 
|   | 
| } |