自动化立体仓库 - WMS系统
chen.lin
6 天以前 10778ff6207c31641187acb487d4b67c0de59b24
src/main/java/com/zy/asrs/task/handler/AgvHandler.java
@@ -21,6 +21,7 @@
import com.zy.asrs.entity.WrkMastLog;
import com.zy.common.constant.ApiInterfaceConstant;
import com.zy.common.properties.AgvProperties;
import com.zy.common.utils.AgvUtils;
import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@@ -669,14 +670,26 @@
        return result;
    }
    /**
     * 构造请求内容(仙工M4格式)
     */
    public String getRequest(Task task, String nameSpace) {
        JSONObject object = new JSONObject();
        // taskId使用工作号(wrk_no),格式:T + 工作号
        // 如果工作号为空,则使用任务ID作为备选
        String taskIdValue = (task.getWrkNo() != null) ? "T" + task.getWrkNo() : "T" + task.getId();
        // taskId使用agvWrkNo字段,如果为空则生成新的agvWrkNo
        String taskIdValue = task.getAgvWrkNo();
        if (taskIdValue == null || taskIdValue.isEmpty()) {
            // 如果agvWrkNo为空,生成新的agvWrkNo
            if (task.getWrkNo() != null) {
                taskIdValue = AgvUtils.generateAgvWrkNo(task.getWrkNo());
                // 更新任务的agvWrkNo字段
                task.setAgvWrkNo(taskIdValue);
                taskService.updateById(task);
            } else {
                // 如果工作号也为空,使用任务ID作为备选(向后兼容)
                taskIdValue = "T" + task.getId();
            }
        }
        object.put("taskId", taskIdValue);
        // fromBin使用源库位编号(sourceLocNo),如果为空则使用源站点编号(sourceStaNo)作为备选
        String fromBin = task.getSourceLocNo();
@@ -1042,8 +1055,12 @@
            // todo 计算agv目标暂存位
            int endSite = 2004;
            // 生成AGV工作号
            String agvWrkNo = AgvUtils.generateAgvWrkNo(wrkMast.getWrkNo());
            // 插入agv任务
            Task task = new Task(wrkMast.getWrkNo(), 7L, wrkMast.getIoType(), String.valueOf(wrkMast.getStaNo()), String.valueOf(endSite), null, wrkMast.getBarcode());
            task.setAgvWrkNo(agvWrkNo); // 设置AGV工作号
            taskService.insert(task);
            // 更新任务档agv搬运标识
            wrkMast.setCallAgv(2);
@@ -1102,10 +1119,16 @@
        // 构造取消任务请求
        JSONObject cancelRequest = new JSONObject();
        // taskId使用工作号(wrk_no),格式:T + 工作号
        // 如果工作号为空,则使用任务ID作为备选
        String taskIdValue = (task.getWrkNo() != null) ? "T" + task.getWrkNo() : "T" + task.getId();
        cancelRequest.put("taskId", taskIdValue);
        // taskId使用agvWrkNo字段,如果为空则使用工作号或任务ID作为备选
        String taskIdValue = task.getAgvWrkNo();
        if (taskIdValue == null || taskIdValue.isEmpty()) {
            if (task.getWrkNo() != null) {
                taskIdValue = AgvUtils.generateAgvWrkNo(task.getWrkNo());
            } else {
                taskIdValue = "T" + task.getId();
            }
        }
        cancelRequest.put("taskId", task.getAgvWrkNo());
        cancelRequest.put("kind", kind);
        String body = cancelRequest.toJSONString();