自动化立体仓库 - WMS系统
pang.jiabao
1 天以前 ddc6cd417d5e912d5cba297bb7849a1dcf7367be
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
package com.zy.asrs.service.impl;
 
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.BasCrnp;
import com.zy.asrs.mapper.BasCrnpMapper;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.service.WrkMastService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
@Slf4j
@Service("basCrnpService")
public class BasCrnpServiceImpl extends ServiceImpl<BasCrnpMapper, BasCrnp> implements BasCrnpService {
 
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private BasDevpService basDevpService;
 
    @Override
    public BasCrnp checkSiteStatus(Integer crnId) {
        BasCrnp crnp = this.selectById(crnId);
        if (Cools.isEmpty(crnp)) {
            throw new CoolException(crnId + "号堆垛机不存在");
        }
        if ("N".equals(crnp.getInEnable())) {
            throw new CoolException(crnId + "堆垛机不可入");
        }
        if ("N".equals(crnp.getOutEnable())) {
            throw new CoolException(crnId + "堆垛机不可出");
        }
        return crnp;
    }
 
    @Override
    public boolean checkSiteError(Integer crnNo, boolean pakin) {
        BasCrnp crnp = this.selectById(crnNo);
        if (Cools.isEmpty(crnp)) {
//            log.error("{}号堆垛机不存在", crnNo);
            return false;
        }
        if (crnp.getCrnErr() != null && crnp.getCrnSts() != 3){
            log.error("{}号堆垛机非自动连线状态,无法作业!", crnNo);
            return false;
        }
        if (crnp.getCrnErr() != null) {
            if (crnp.getCrnErr() != 0) {
                log.error("{}号堆垛机异常,异常码{}", crnNo, crnp.getCrnErr());
                return false;
            }
        }
 
        if (pakin) {
//            //TODO控制入库暂存数,防止主干道堵塞,2022-5-24 ADD
//            int staNo = 0;
//            switch (crnNo){
//                case 1:
//                    staNo = 123;
//                    break;
//                case 2:
//                    staNo = 121;
//                    break;
//                case 3:
//                    staNo = 119;
//                    break;
//                case 4:
//                    staNo = 117;
//                    break;
//                case 5:
//                    staNo = 115;
//                    break;
//                case 6:
//                    staNo = 113;
//                    break;
//                case 7:
//                    staNo = 111;
//                    break;
//                case 8:
//                    staNo = 109;
//                    break;
//                case 9:
//                    staNo = 106;
//                    break;
//                case 10:
//                    staNo = 105;
//                    break;
//                case 11:
//                    staNo = 103;
//                    break;
//                case 12:
//                    staNo = 101;
//                    break;
//            }
//            int maxCount = 2;
//            BasDevp devp = basDevpService.selectById(staNo);
//            if(!Cools.isEmpty(devp)){
//                maxCount = devp.getInQty();
//            }
//
//            int storeCount = wrkMastService.getStoreCount(crnNo);
//
//            if(storeCount >= maxCount){
//                log.error("{}号堆垛机暂存数已满!", crnNo);
//                return false;
//            }
 
            if ("N".equals(crnp.getInEnable())) {
                log.error("{}号堆垛机不可入", crnNo);
                return false;
            }
        } else {
            if ("N".equals(crnp.getOutEnable())) {
                log.error("{}号堆垛机不可出", crnNo);
                return false;
            }
        }
 
        return true;
    }
 
//    //杰克
//    @Override
//    public boolean checkSiteError2(Integer crnNo, boolean pakin, Integer sourceStaNo) {
//        BasCrnp crnp = this.selectById(crnNo);
//        if (Cools.isEmpty(crnp)) {
//            log.error("{}号堆垛机不存在", crnNo);
//            return false;
//        }
//        if (crnp.getCrnErr() != null && crnp.getCrnSts() != 3){
//            log.error("{}号堆垛机非自动连线状态,无法作业!", crnNo);
//            return false;
//        }
//        if (crnp.getCrnErr() != null) {
//            if (crnp.getCrnErr() != 0) {
//                log.error("{}号堆垛机异常,异常码{}", crnNo, crnp.getCrnErr());
//                return false;
//            }
//        }
//
//        if (pakin) {
//            //TODO控制入库暂存数,防止主干道堵塞,2022-5-24 ADD
//            int staNo = 0;
//            String crnNos = "";
//            switch (crnNo){
//                case 1:
//                    staNo = 123;
//                    crnNos = "1,2,3,4";
//                    break;
//                case 2:
//                    staNo = 121;
//                    crnNos = "1,2,3,4";
//                    break;
//                case 3:
//                    staNo = 119;
//                    crnNos = "1,2,3,4";
//                    break;
//                case 4:
//                    staNo = 117;
//                    crnNos = "1,2,3,4";
//                    break;
//                case 5:
//                    staNo = 115;
//                    crnNos = "5,6,7,8";
//                    break;
//                case 6:
//                    staNo = 113;
//                    crnNos = "5,6,7,8";
//                    break;
//                case 7:
//                    staNo = 111;
//                    crnNos = "5,6,7,8";
//                    break;
//                case 8:
//                    staNo = 109;
//                    crnNos = "5,6,7,8";
//                    break;
//                case 9:
//                    staNo = 106;
//                    crnNos = "9,10,11,12";
//                    break;
//                case 10:
//                    staNo = 105;
//                    crnNos = "9,10,11,12";
//                    break;
//                case 11:
//                    staNo = 103;
//                    crnNos = "9,10,11,12";
//                    break;
//                case 12:
//                    staNo = 101;
//                    crnNos = "9,10,11,12";
//                    break;
//            }
//            int maxCount = 2;
//            int storeCount = wrkMastService.getStoreCount(crnNo);
//
//            //分北中南三个区判断,每4台堆垛机1个区。除1号有3个暂存以外,只要有出库任务入库暂存数就只能为1个
//            //没有出库任务时,暂存数在devp表in_qty字段配置
////            int pakOutCunt = wrkMastService.getPakOutCount(crnNos);
////            if(pakOutCunt > 0){
////                maxCount = crnNo!= 1 ? 1 : 3;//1号3个入库暂存
////            } else {
//            BasDevp devp = basDevpService.selectById(staNo);
//            if(!Cools.isEmpty(devp)){
//                maxCount = devp.getInQty();
//            }
////            }
//
//            if(storeCount >= maxCount){
//                log.error("{}号堆垛机暂存数已满![storeCount:{},maxCount:{}]", crnNo, storeCount, maxCount);
//                return false;
//            }
//
//            if ("N".equals(crnp.getInEnable())) {
//                log.error("{}号堆垛机不可入", crnNo);
//                return false;
//            }
//
//            //1--8号堆垛机,二楼入库时判断是否有对应出库任务,如果有则堆垛机不可用
//            if (sourceStaNo > 299 && crnNo < 9){
//                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
//                        .eq("crn_no",crnNo).last(" and source_sta_no > 300 and ( wrk_sts in (11,12) or (wrk_sts=14 and wrk_no in (select wrk_no from asr_bas_devp)))"));
//                if(!Cools.isEmpty(wrkMast)){
//                    log.error("{}号堆垛机存在出库任务,任务号{}", crnNo, wrkMast.getWrkNo());
//                    return false;
//                }
//            }
//        } else {
//            if ("N".equals(crnp.getOutEnable())) {
//                log.error("{}号堆垛机不可出", crnNo);
//                return false;
//            }
//        }
//
//        return true;
//    }
}