| | |
| | | import com.zy.acs.framework.exception.CoolException; |
| | | import com.zy.acs.manager.common.domain.param.HandlerPublishParam; |
| | | import com.zy.acs.manager.common.exception.BusinessException; |
| | | import com.zy.acs.manager.core.domain.AgvBackpackDto; |
| | | import com.zy.acs.manager.core.domain.TaskPosDto; |
| | | import com.zy.acs.manager.core.service.astart.MapDataDispatcher; |
| | | import com.zy.acs.manager.core.third.zkd.HttpUtils; |
| | |
| | | * Created by vincent on 2023/6/14 |
| | | */ |
| | | @Slf4j |
| | | @Service("mainService") |
| | | public class MainZkdService { |
| | | @Service("zkdMainService") |
| | | public class MainZkdService implements IMainService { |
| | | |
| | | @Autowired |
| | | private BusService busService; |
| | |
| | | * 任务分配给车辆 ( 车辆此时是空闲且静止的 ) |
| | | */ |
| | | @Transactional |
| | | public synchronized void allocateTaskByZkd(Bus bus) { |
| | | public synchronized void allocateTask(Bus bus) { |
| | | try { |
| | | Date now = new Date(); |
| | | List<Task> taskList = taskService.list(new LambdaQueryWrapper<Task>() |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 解析取放货集合任务,进行最优的排列组合顺序 ( 车辆此时是空闲且静止的 ) |
| | | * todo: {@link com.zy.acs.manager.core.HandlerController#controlAgv(String, HandlerPublishParam)} |
| | |
| | | if (!travelService.save(travel)) { |
| | | throw new BusinessException("任务组保存失败"); |
| | | } |
| | | |
| | | // generate segment |
| | | int segSerial = 0; |
| | | List<Segment> segmentList = new ArrayList<>(); |
| | | for (List<TaskPosDto> dtoList : list) { |
| | | for (TaskPosDto taskPosDto : dtoList) { |
| | | for (Navigation.CodeDTO codeDTO : navigation.getCodeList()) { |
| | | segSerial++; |
| | | AgvBackpackType backpackType = AgvBackpackDto.find(backpackDtoList, taskPosDto.getTaskId()); |
| | | assert null != backpackType; |
| | | |
| | | Task task = taskService.getById(Long.parseLong(codeDTO.getTaskId())); |
| | | Segment segment = new Segment(); |
| | | segment.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); |
| | | segment.setTravelId(travel.getId()); |
| | | segment.setAgvId(agvId); |
| | | segment.setTaskId(taskPosDto.getTaskId()); |
| | | segment.setTaskId(task.getId()); |
| | | segment.setSerial(segSerial); |
| | | segment.setEndNode(taskPosDto.getCodeId()); |
| | | segment.setPosType(taskPosDto.getPosType().toString()); |
| | | segment.setBackpack(backpackType.lev); |
| | | Code cacheByData = codeService.getCacheByData(codeDTO.getCode()); |
| | | segment.setEndNode(cacheByData.getId()); |
| | | segment.setPosType(codeDTO.getPosType()); |
| | | segment.setBackpack(codeDTO.getLev()); |
| | | segment.setState(SegmentStateType.INIT.toString()); |
| | | segmentList.add(segment); |
| | | |
| | | task.setTaskSts(TaskStsType.ASSIGN.val()); |
| | | task.setStartTime(new Date()); |
| | | task.setUpdateTime(new Date()); |
| | | if (!taskService.updateById(task)) { |
| | | throw new BusinessException(task.getUuid() + "任务更新失败"); |
| | | } |
| | | } |
| | | for (int i = 0; i < segmentList.size(); i++) { |
| | |
| | | } |
| | | if (!segmentService.save(segment)) { |
| | | throw new BusinessException("任务组保存失败"); |
| | | } |
| | | } |
| | | |
| | | // task |
| | | for (Task task : taskList) { |
| | | task.setTaskSts(TaskStsType.ASSIGN.val()); |
| | | task.setStartTime(now); |
| | | task.setUpdateTime(now); |
| | | if (!taskService.updateById(task)) { |
| | | throw new BusinessException(task.getUuid() + "任务更新失败"); |
| | | } |
| | | } |
| | | |