#
1
20 小时以前 1bfa44facba36747d1caffab6bff986ccd7f36a9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
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
 * */
@Data
public class AgvTaskAssignmentParam {
 
    private String reqCode;
    private String taskCode;
    private String taskTyp = "cs";
    private String ctnrTyp = "1";
    private ArrayList<PositionCodePathClass> positionCodePath = new ArrayList<PositionCodePathClass>();
 
    @Data
    public static class PositionCodePathClass {
        private String positionCode;
        private String type = "05";//放置位
    }
 
    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);
    }
 
 
}