1
zhang
2025-06-17 513f54c61991af2078c9098845df3e840ea5b863
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainZkdService.java
@@ -19,7 +19,6 @@
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;
@@ -46,8 +45,8 @@
 * Created by vincent on 2023/6/14
 */
@Slf4j
@Service("mainService")
public class MainZkdService {
@Service("zkdMainService")
public class MainZkdService implements IMainService {
    @Autowired
    private BusService busService;
@@ -101,7 +100,7 @@
     * 任务分配给车辆 ( 车辆此时是空闲且静止的 )
     */
    @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>()
@@ -182,6 +181,8 @@
        }
    }
    /**
     * 解析取放货集合任务,进行最优的排列组合顺序 ( 车辆此时是空闲且静止的 )
     * todo: {@link com.zy.acs.manager.core.HandlerController#controlAgv(String, HandlerPublishParam)}
@@ -200,27 +201,30 @@
            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) {
                    segSerial++;
                    AgvBackpackType backpackType = AgvBackpackDto.find(backpackDtoList, taskPosDto.getTaskId());
                    assert null != backpackType;
            for (Navigation.CodeDTO codeDTO : navigation.getCodeList()) {
                segSerial++;
                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(task.getId());
                segment.setSerial(segSerial);
                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);
                    Segment segment = new Segment();
                    segment.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3));
                    segment.setTravelId(travel.getId());
                    segment.setAgvId(agvId);
                    segment.setTaskId(taskPosDto.getTaskId());
                    segment.setSerial(segSerial);
                    segment.setEndNode(taskPosDto.getCodeId());
                    segment.setPosType(taskPosDto.getPosType().toString());
                    segment.setBackpack(backpackType.lev);
                    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++) {
@@ -230,16 +234,6 @@
                }
                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() + "任务更新失败");
                }
            }