#
1
21 小时以前 1bfa44facba36747d1caffab6bff986ccd7f36a9
src/main/java/com/zy/asrs/entity/param/AgvTaskAssignmentParam.java
@@ -1,7 +1,14 @@
package com.zy.asrs.entity.param;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.SnowflakeIdWorker;
import com.core.common.SpringUtils;
import com.zy.asrs.entity.BasAgvLocNo;
import com.zy.asrs.entity.BasAgvMast;
import com.zy.asrs.service.BasAgvLocNoService;
import lombok.Data;
import java.util.ArrayList;
/*
 *  Created by Monkey D. Luffy on 2025.09.09
@@ -9,18 +16,140 @@
@Data
public class AgvTaskAssignmentParam {
    private String id;
    private String reqCode;
    private String taskCode;
    private String taskTyp = "cs";
    private String ctnrTyp = "1";
    private ArrayList<PositionCodePathClass> positionCodePath = new ArrayList<PositionCodePathClass>();
    public AgvTaskAssignmentParam() {}
    public AgvTaskAssignmentParam(String id) {
        this.id = id;
    @Data
    public static class PositionCodePathClass {
        private String positionCode;
        private String type = "05";//放置位
    }
    public AgvTaskAssignmentParam(int id) {
        this.id = String.valueOf(id);
    public AgvTaskAssignmentParam() {
    }
    public AgvTaskAssignmentParam(BasAgvMast basAgvMast) {
        switch (basAgvMast.getIoType()){
            case 0:
                getAgvTaskAssignmentParam0(basAgvMast);
                if(basAgvMast.getFloorNo() == 1){
                    taskTyp = "1FQ3";
                }else if(basAgvMast.getFloorNo() == 2){
                    taskTyp = "2FRK";
                }else{
                    taskTyp = "4FRK";
                }
                ctnrTyp = "1";
                return;
            case 1:
                getAgvTaskAssignmentParam1(basAgvMast);
                taskTyp = basAgvMast.getDevpId()==1?"1FYK":"";
                ctnrTyp = "1";
                return;
            case 2:
                getAgvTaskAssignmentParam2(basAgvMast);
                if(basAgvMast.getFloorNo() == 1){
                    taskTyp = "1FQ1";
                }else if(basAgvMast.getFloorNo() == 2){
                    taskTyp = "2FCK";
                }else{
                    taskTyp = "4FCK";
                }
                ctnrTyp = "1";
                return;
            case 3:
                getAgvTaskAssignmentParam3(basAgvMast);
//                taskTyp = "1FQ4";
                ctnrTyp = "1";
                return;
            default:
                return;
        }
    }
    public void getAgvTaskAssignmentParam0(BasAgvMast basAgvMast) {
        BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class);
        this.reqCode = basAgvMast.getTaskNo() + "-" + basAgvMast.getTimestamp();
        this.taskCode = basAgvMast.getTaskNo() + "-" + basAgvMast.getTimestamp();
        String sourceAgvLoc = getAgvLocNoOrDefault(basAgvLocNoService, "loc_no", basAgvMast.getSourceLocNo());
        PositionCodePathClass sou = new PositionCodePathClass();
        sou.setPositionCode(sourceAgvLoc);
        sou.setType(basAgvMast.getFloorNo()!=1?"00":"05");
        this.positionCodePath.add(sou);
        String endAgvLoc = getAgvLocNoOrDefault(basAgvLocNoService, "sta_no", basAgvMast.getStaNo());
        PositionCodePathClass end = new PositionCodePathClass();
        end.setType(basAgvMast.getFloorNo()!=1?"00":"05");
        end.setPositionCode(endAgvLoc);
        this.positionCodePath.add(end);
    }
    public void getAgvTaskAssignmentParam1(BasAgvMast basAgvMast) {
        BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class);
        this.reqCode = basAgvMast.getTaskNo()+"-"+basAgvMast.getTimestamp();
        this.taskCode = basAgvMast.getTaskNo()+"-"+basAgvMast.getTimestamp();
        String agvLocSou = getAgvLocNoOrDefault(basAgvLocNoService, "loc_no", basAgvMast.getSourceLocNo());
        PositionCodePathClass sou = new PositionCodePathClass();
        sou.setPositionCode(agvLocSou);
        sou.setType(basAgvMast.getFloorNo()!=1?"00":"05");
        this.positionCodePath.add(sou);
        String agvLocEnd = getAgvLocNoOrDefault(basAgvLocNoService, "loc_no", basAgvMast.getLocNo());
        PositionCodePathClass end = new PositionCodePathClass();
        end.setType(basAgvMast.getFloorNo()!=1?"00":"05");
        end.setPositionCode(agvLocEnd);
        this.positionCodePath.add(end);
    }
    public void getAgvTaskAssignmentParam2(BasAgvMast basAgvMast) {
        BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class);
        this.reqCode = basAgvMast.getTaskNo()+"-"+basAgvMast.getTimestamp();
        this.taskCode = basAgvMast.getTaskNo()+"-"+basAgvMast.getTimestamp();
        String agvLocSou = getAgvLocNoOrDefault(basAgvLocNoService, "sta_no", basAgvMast.getSourceStaNo());
        PositionCodePathClass sou = new PositionCodePathClass();
        sou.setPositionCode(agvLocSou);
        sou.setType(basAgvMast.getFloorNo()!=1?"00":"05");
        this.positionCodePath.add(sou);
        String agvLocEnd = getAgvLocNoOrDefault(basAgvLocNoService, "loc_no", basAgvMast.getLocNo());
        PositionCodePathClass end = new PositionCodePathClass();
        end.setType(basAgvMast.getFloorNo()!=1?"00":"05");
        end.setPositionCode(agvLocEnd);
        this.positionCodePath.add(end);
    }
    public void getAgvTaskAssignmentParam3(BasAgvMast basAgvMast) {
        BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class);
        this.reqCode = basAgvMast.getTaskNo()+"-"+basAgvMast.getTimestamp();
        this.taskCode = basAgvMast.getTaskNo()+"-"+basAgvMast.getTimestamp();
        String agvLocSou = getAgvLocNoOrDefault(basAgvLocNoService, "sta_no", basAgvMast.getSourceStaNo());
        PositionCodePathClass sou = new PositionCodePathClass();
        sou.setPositionCode(agvLocSou);
        sou.setType(basAgvMast.getFloorNo()!=1?"00":"05");
        this.positionCodePath.add(sou);
        String agvLocEnd = getAgvLocNoOrDefault(basAgvLocNoService, "sta_no", basAgvMast.getStaNo());
        PositionCodePathClass end = new PositionCodePathClass();
        end.setType(basAgvMast.getFloorNo()!=1?"00":"05");
        end.setPositionCode(agvLocEnd);
        this.positionCodePath.add(end);
    }
    private String getAgvLocNoOrDefault(BasAgvLocNoService service, String column, Object value) {
        if (value == null) {
            return null;
        }
        BasAgvLocNo record = service.selectOne(new EntityWrapper<BasAgvLocNo>().eq(column, value));
        if (record != null && record.getAgvLocNo() != null) {
            return record.getAgvLocNo();
        }
        // 查询不到就返回原值,但必须转换成 String
        return String.valueOf(value);
    }
}