| | |
| | | import com.zy.acs.framework.common.Cools; |
| | | import com.zy.acs.framework.exception.CoolException; |
| | | import com.zy.acs.manager.common.utils.MapDataUtils; |
| | | import com.zy.acs.manager.core.domain.PathDto; |
| | | import com.zy.acs.manager.core.service.astart.domain.DynamicNode; |
| | | import com.zy.acs.manager.core.utils.RouteGenerator; |
| | | import com.zy.acs.manager.manager.entity.Code; |
| | |
| | | import com.zy.acs.manager.manager.service.CodeService; |
| | | import com.zy.acs.manager.manager.service.RouteService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.PostConstruct; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * Created by vincent on 6/6/2024 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class MapDataDispatcher { |
| | | |
| | | public static final Integer MAP_DEFAULT_LEV = 1; |
| | |
| | | |
| | | public Map<String, Boolean> routeCdaMap = new HashMap<>(); |
| | | |
| | | private final CodeService codeService; |
| | | @Autowired |
| | | private CodeService codeService; |
| | | |
| | | private final RouteService routeService; |
| | | @Autowired |
| | | private RouteService routeService; |
| | | |
| | | public MapDataDispatcher(CodeService codeService, RouteService routeService) { |
| | | this.codeService = codeService; |
| | | this.routeService = routeService; |
| | | @PostConstruct |
| | | public void init() { |
| | | String[][] codeMatrix = this.getCodeMatrix(null); |
| | | this.initRouteMap(null); |
| | | if (codeMatrix.length > 0) { |
| | | this.getMapMatrix(null, null); |
| | | this.getTurnMatrix(null); |
| | | this.getCdaMatrix(null); |
| | | this.getDynamicMatrix(null); |
| | | } |
| | | } |
| | | |
| | | public String[][] getWaveMatrix(Integer lev) { |
| | |
| | | lev = Optional.ofNullable(lev).orElse(MAP_DEFAULT_LEV); |
| | | |
| | | String[][] codeMatrix = getCodeMatrix(lev); |
| | | if (null == codeMatrix || codeMatrix.length == 0) { |
| | | return new DynamicNode[0][0]; |
| | | } |
| | | DynamicNode[][] dynamicMatrix = new DynamicNode[codeMatrix.length][codeMatrix[0].length]; |
| | | |
| | | for (int i = 0; i < codeMatrix.length; i++) { |
| | |
| | | } |
| | | |
| | | public void modifyDynamicMatrix(Integer lev, List<int[]> codeIdxList, String vehicle) { |
| | | this.modifyDynamicMatrix(lev, codeIdxList, vehicle, false); |
| | | this.modifyDynamicMatrix(lev, codeIdxList, vehicle, false, null); |
| | | } |
| | | |
| | | public void modifyDynamicMatrix(Integer lev, List<int[]> codeIdxList, String vehicle, List<PathDto> pathTrace) { |
| | | this.modifyDynamicMatrix(lev, codeIdxList, vehicle, false, pathTrace); |
| | | } |
| | | |
| | | public synchronized void modifyDynamicMatrix(Integer lev, List<int[]> codeIdxList, String vehicle, boolean reset) { |
| | | this.modifyDynamicMatrix(lev, codeIdxList, vehicle, reset, null); |
| | | } |
| | | |
| | | private synchronized void modifyDynamicMatrix(Integer lev, List<int[]> codeIdxList, String vehicle, boolean reset, List<PathDto> pathTrace) { |
| | | if (Cools.isEmpty(vehicle)) { |
| | | return; |
| | | } |
| | |
| | | DynamicNode[][] dynamicMatrix = getDynamicMatrix(lev); |
| | | |
| | | if (!reset) { |
| | | // long time = System.currentTimeMillis() / 1000; |
| | | int serial = 1; |
| | | for (int[] codeMatrixIdx : codeIdxList) { |
| | | dynamicMatrix[codeMatrixIdx[0]][codeMatrixIdx[1]] = new DynamicNode(vehicle, serial); |
| | | for (int i = 0; i < codeIdxList.size(); i++) { |
| | | int[] codeMatrixIdx = codeIdxList.get(i); |
| | | |
| | | PathDto pathDto = (pathTrace != null && i < pathTrace.size()) ? pathTrace.get(i) : null; |
| | | Double direction = pathDto == null ? null : pathDto.getDirection(); |
| | | boolean turn = pathDto != null && pathDto.isTurn(); |
| | | |
| | | dynamicMatrix[codeMatrixIdx[0]][codeMatrixIdx[1]] = new DynamicNode(vehicle, serial, direction, turn); |
| | | serial++; |
| | | } |
| | | } else { |